对不起,我真的很傻我必须做的事情,所以这个问题可能是愚蠢的。 我将我的网站从Apache移动到NginX。所以我必须将.htacess重定向转移到NginX conf。所以,我找到了一个好转换器,单一规则工作正常。但是一旦我尝试实现几个,就会发生这样的事情。例如,两个步骤: 1.WhWW - >万维网 2.从URI
中删除index.php在.htaccess中它可以正常工作 mysite.com/index.php?p=123 - > (301)www.mysite.com/?p=123 ,一次,一次重定向。
但是在NgonX中我做了相同的规则,它起到了链条的作用:
site.ru/index.php?p=123 - > (301)site.ru/?p=123 - > (301)www.site.ru/?p=123 这是完全错误的,因为我认为。
我希望我只是愚蠢并跳过一些标准和简单的程序,例如"放在括号中#34;一些条件和规则,以避免链...请告诉我什么错?或者我的方式只是忘记NginX。
我是如何做到这个例子的:
# non-WWW to WWW
if ($http_host !~ "^$"){
set $rule_0 1$rule_0;
}
if ($http_host !~* "^www."){
set $rule_0 2$rule_0;
}
if ($http_host ~ "(.+)$"){
set $rule_0 3$rule_0;
set $bref_1 $1;
}
if ($rule_0 = "321"){
rewrite ^/(.*) http://www.$bref_1/$1 permanent;
}
# remove index.php string from URL
if ($uri ~ "^/index.php$"){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite /. / permanent;
}
以上情况根本不起作用,在非自愿之后 - > WWW它停止并且index.php删除不起作用。
# non-WWW to WWW
if ($http_host !~ "^$"){
set $rule_0 1$rule_0;
}
if ($http_host !~* "^www."){
set $rule_0 2$rule_0;
}
if ($http_host ~ "(.+)$"){
set $rule_0 3$rule_0;
set $bref_1 $1;
}
if ($rule_0 = "321"){
rewrite ^/(.*) http://www.$bref_1/$1 permanent;
}
# remove index.php string from URL
if ($uri ~ "^/index.php$"){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite /. / permanent;
}
这可以作为一个链......
答案 0 :(得分:0)
将非www重定向到www。许多来源(包括official wiki)方式建议 - 具有重定向的不同服务器:
server {
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
}
server {
server_name www.example.com;
....
}
删除索引
server {
server_name www.example.com;
....
location / {
rewrite ^/index\.php$ / permanent;
....
}
}