htaccess 301将www和non-www重定向到non-www子文件夹

| 我正在尝试将www和非www重定向到非www子文件夹/ forums。 我目前正在使用此代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\\.example\\.com$ [OR]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ http://example.com/forums/$1 [R=301,L]
它运行良好,但是存在一些问题。 如果输入URL:example.com,它将带我到example.com/forums。 -好 如果输入URL:example.com/test,它将带我到example.com/test。 -好 如果输入URL:www.example.com,它将带我到example.com/forums。 -好 如果输入URL:www.example.com/test,它将带我到example.com/forums/test。 -错误 如何解决www.example.com/test发生的错误? 我希望www.example.com/test通向example.com/test。 请帮助我,谢谢!     
已邀请:
尝试在您的.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]
    
如果您没有其他指向相同目录的子域(或者它们也被重定向也没关系),那么您可以尝试以下操作:
RewriteEngine On
RewriteRule ^$ /forums/ [R=301,L]
这会将所有对www.example.com/和example.com/的请求重定向到子文件夹/ forums /,并保持所有其他请求不变。 假设您给定的测试用例是唯一要考虑的用例,那么这应该可行。如果还有其他情况,则可能需要扩展规则。     

要回复问题请先登录注册