我正在尝试设置重定向此网址的重写:
/video-2011.php?video=150
到此:
/视频/ 150 /自由标题文本-这里/
我在HTACCESS中使用此行进行重写:
RewriteRule ^video/([0-9]+)/(.*)$ video-2011.php?video=$1 [L]
但是,一旦我将R = 301添加到混音中,它就会中断。有什么想法吗?
以下是完整的HTACCESS:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^video/([0-9]+)/(.*)$ video-2011.php?video=$1 [R=301,L]
非常感谢任何帮助,谢谢!
答案 0 :(得分:2)
我想你可能会错过.Htaccess中的一行。
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^video/([0-9]+)/([a-z0-9-_]+)$ video-2011.php?video=$1 [L]
#New
RewriteCond %{REQUEST_URI} !^/video/([0-9]+)/([a-z0-9-_]+)/?$
RewriteCond %{QUERY_STRING} ^video=([0-9]+)&name=([a-z0-9-_]+)/?$
RewriteRule ^video-2011.php$ video/%1/%2/? [R=301,L]
我假设您希望重写该网址:
/video/150/freeform-title-text-here/
并且重定向网址,如果是:
/video-2011.php?video=150
为:
/video/150/freeform-title-text-here/
所以这样可以保持网址看起来整洁。
如果我错了,请纠正我。
修改强>
我在RewriteCond中添加了阻止第二次重写的事情。
因为第一条规则显然会改写:
/video/150/freeform-title-text-here/
这意味着您没有看到的查询字符串:
/video-2011.php?video=150
第二条规则也会发生。
答案 1 :(得分:0)
你可以尝试:
RewriteRule ^video/([0-9]+)/ /video-2011.php?video=$1 [R=301,L,NC,QSA]
是的,它会将/video/150/foo
重定向到/video.php?video=150
,而不是像你在问题中所说的那样反过来。