菜单更改后重写一些网址

时间:2012-10-30 15:51:51

标签: .htaccess mod-rewrite

我无法获得

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 /'的匹配,然后将这样的内容发送到网址...我现在已经失去了太多时间这个典型的我会猜测问题,看看很多类似的在线,但没有什么适用于这种情况.. 感谢

2 个答案:

答案 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]