我真的尝试了所有东西,工具htaccess tester说没关系,但它并没有真正起作用。
仅当REQUEST_URI不以3个特定字符串开头时,我才想将子域重定向到主域。
我尝试过没有成功:
RewriteCond %{HTTP_HOST} ^sub.example.com$ [NC]
RewriteCond %{REQUEST_URI} !(aaa|bbb|ccc)
RewriteCond %{REQUEST_URI} !^/?$
RewriteRule ^(.*)$ http://www.example.com%{REQUEST_URI} [R=301,NC,L,QSA]
我想要那个:
http://sub.example.com
(不应重定向) - > http://sub.example.com
|行http://sub.example.com/aaa/sss
(不应重定向) - > http://sub.example.com/aaa/sss
| KO(重定向到http://www..。)http://sub.example.com/zzz/xxx
(应重定向) - > http://www.example.com/zzz/xxx
|行由于
答案 0 :(得分:2)
请尝试使用此规则:
RewriteCond %{HTTP_HOST} ^sub\.example\.com$ [NC]
RewriteCond %{THE_REQUEST} !\s/+(aaa|bbb|ccc)/ [NC]
RewriteRule . http://www.example.com%{REQUEST_URI} [R=301,L,NE]
清除浏览器缓存后进行测试。
使用THE_REQUEST
代替REQUEST_URI
来确保我们使用Apache收到的未更改的URI值。