我无法获得
site.com/member-videos
进入
site.com/videos
或实际上
#RewriteCond %{HTTP_HOST} !^/community/member-videos/
#RewriteRule (.*) http://site.com/community/videos/$1 [R=301,L]
这似乎循环了!
对我来说,上面说'找到'/ community / member-videos /'的匹配,然后将这样的内容发送到网址...我现在已经失去了太多时间这个典型的我会猜测问题,看看很多类似的在线,但没有什么适用于这种情况.. 感谢
答案 0 :(得分:0)
RewriteRule (.*) http://site.com/community/videos/$1 [R=301,L]
这是错误的,它会让你陷入无限循环。
试试这个:
RewriteRule http://site.com/community/member-videos/$1 ^community/videos/(.*)$ [R=301,L]
答案 1 :(得分:0)
你几乎拥有它。您的条件与匹配的变量是主机,不是URI 。如果您需要检查主机,它必须只是主机名(根本不是URI路径),例如site.com
。您需要使用%{REQUEST_URI}
变量来匹配的内容:
RewriteCond %{HTTP_HOST} ^(www\.)?site\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/videos/
RewriteRule ^/?member-videos(.*)$ /videos$1 [L,R=301]
您提供的示例根本没有URI中的community
部分,如果它不在URL中,它将不会出现在发送到重写引擎的字符串中。但是你的规则中有/community
,所以如果实际上你需要这条路,那么:
RewriteCond %{HTTP_HOST} ^(www\.)?site\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/community/videos/
RewriteRule ^/?community/member-videos(.*)$ /community/videos$1 [L,R=301]