规则如下:(网站是例子,都是301转向www.tjp.com)
if ($host = 'tjp.com' ) {
rewrite ^/(.*)$ http://www.tjp.com/$1 permanent;
}
if ($host = 'youm.com' ) {
rewrite ^/(.*)$ http://www.tjp.com/$1 permanent;
}
if ($host = 'www.youm.com' ) {
rewrite ^/(.*)$ http://www.tjp.com/$1 permanent;
}
错误如下
[警告] Nginx配置Rewrite规则错误,请查检改正。 [AMRewrite-1.0 admin] [OK] AMRewrite-1.0 is already installed. nginx: [emerg] unknown directive " " in /usr/local/nginx/conf/rewrite/yms.conf:2 nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的错误信息,问题出在配置文件中存在未知指令的错误。错误提示为“unknown directive " in /usr/local/nginx/conf/rewrite/yms.conf:2”,这通常意味着在您的配置文件
yms.conf`的第2行有一个空白或者不被Nginx识别的指令。
基于您给出的规则示例,看起来是想实现将多个域名301重定向到www.tjp.com
的功能。首先,请确保您的配置文件中没有多余的空格、制表符或其他不可见字符导致的问题,特别是每条规则前后。然后,检查是否有遗漏的引号或括号等语法错误。
下面是修正后的配置示例,注意保持格式整洁且无多余字符:
server {
listen 80;
server_name tjp.com youm.com www.youm.com;
if ($host = 'tjp.com' ) {
return 301 http://www.tjp.com$request_uri;
}
if ($host ~* ^(youm\.com|www\.youm\.com)$ ) {
return 301 http://www.tjp.com$request_uri;
}
}
这个修正版做了以下几点改进: 1. 使用server_name
指令一次性定义了所有需要处理的域名。 2. 用return 301
替代了rewrite
语句,这是更简洁和推荐的方式来实现永久重定向。 3. 利用了正则表达式(youm\.com|www\.youm\.com)
来合并后两个条件判断,简化了配置。
请将上述内容替换到您的Nginx配置文件中的适当位置,并重新测试Nginx配置(通常使用nginx -t
命令),最后重启Nginx服务以应用更改。如果问题仍然存在,请再次检查配置文件的其他部分,确保没有其他语法错误。