我正在尝试将www和非www重定向到非www子文件夹/论坛。
我目前正在使用此代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [OR]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ http://example.com/forums/$1 [R=301,L]
它运作良好,但是存在一些问题。
如果我输入网址:example.com,它会将我带到example.com/forums。 -OK
如果我输入网址:example.com/test,它会将我带到example.com/test。 -OK
如果我输入网址:www.example.com,则会将我转到example.com/forums。 -OK
如果我输入网址:www.example.com/test,则会将我转到example.com/forums/test。 -WRONG
如何修复www.example.com/test发生的错误?
我希望www.example.com/test引导到example.com/test。
请帮助我,谢谢!
答案 0 :(得分:2)
在.htaccess文件中尝试以下规则:
RewriteEngine on
Options +FollowSymlinks -MultiViews
# redirect empty URL to /forums
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^$ http://example.com/forums [R=301,L]
# non forums handler
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/forums [NC]
RewriteRule ^(.+)$ http://example.com/$1 [R=301,L]
答案 1 :(得分:0)
如果您没有任何其他子域指向同一目录(或者它们也被重定向也无关紧要),那么您可以尝试这样做:
RewriteEngine On
RewriteRule ^$ /forums/ [R=301,L]
这会将对www.example.com/和example.com/的任何请求重定向到子文件夹/ forums /,并保持所有其他请求不受影响。
假设您的测试用例是唯一要考虑的测试用例,那么这应该可行。如果您有任何其他情况,则可能需要扩展规则。