我目前将所有流量重定向到我网站的www.
版本。但是,在检查特定文件夹中的重定向链接时,我发现了可能/可能不是问题的内容。
基本上,如果我对www.example.com/example/examplepage/
进行标题检查,则显示200 OK。
如果我检查www.example.com/example/examplepage
(没有尾随/
),则会显示301重定向到上面的内容。
但是,如果我选中example.com/example/examplepage/
(没有www
),它会重定向到www.example.com/example/examplepage.php
...然后重定向到www.example.com/example/examplepage/
(正确的页面)。
我希望这有道理吗?
a)这样可以吗?
b)我在.htaccess
中遗漏了什么?
RewriteOptions inherit
RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/index.htm
RewriteRule ^(.*)index.htm$ http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} \.php
RewriteRule ^tips/([^.]+)\.php$ http://www.example.com/example/$1/ [R=301,L]
RewriteRule ^tips/([^.]+[^./])$ http://www.example.com/example/$1/ [R=301,L]
RewriteRule ^(tips/[^.]+)/$ /$1.php [L]
请注意:上面的PHP规则创建于"隐藏"特定文件夹上的.php
个扩展名(并不希望它们隐藏在其他任何位置)。
答案 0 :(得分:0)
我设法解决了(嗯,好吧 - 幸运的猜测),但无论哪种方式,它似乎现在都有效。我已经调整了以上规则顺序以显示以下内容:
RewriteEngine On
RewriteCond %{THE_REQUEST} \.php
RewriteRule ^tips/([^.]+)\.php$ http://www.example.com/tips/$1/ [R=301,L]
RewriteRule ^tips/([^.]+[^./])$ http://www.example.com/tips/$1/ [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.htm
RewriteRule ^(.*)index.htm$ http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^(tips/[^.]+)/$ /$1.php [L]
现在导致:
所有终于重定向到www.example.com/tips/examplepage/(带斜杠)
它还可以确保www.example.com/examplepage.php(不在“tips”文件夹中)保留其扩展名。
它还将index.htm重写为/(使用www和非www)。
我试图在这里添加尽可能多的细节,希望它可以防止其他人浪费整个周末拉头发,变灰等......