使用RewriteRule从重定向中删除主题标签

时间:2012-12-09 18:39:05

标签: regex mod-rewrite

我目前正在通过获取变量并将其插入新URL来重定向URL。像这样:

RewriteCond %{QUERY_STRING} &pid=([0-9]*)$
RewriteRule ^vault/displayimage\.php$ photos/%1/? [R=301,L]

不幸的是,有些链接在旧系统中有一个不需要的主题标签,所以我想在没有它们的情况下重定向(或者将它们剥离)。防爆。 - 通过上面的重定向,我们采取类似

的方式
/vault/displayimage.php?album=5&pid=10#top_pictures

重定向到

/photos/10/#top_pictures

我希望它只是

/photos/10/

感谢您的任何提示!

2 个答案:

答案 0 :(得分:4)

位置哈希仅存在于浏览器中,并且永远不会发送到服务器。因此,您无法使用重写规则来影响它们。

这是people advise against using them

的原因之一

另见URL Fragment and 302 redirects

答案 1 :(得分:1)

您可以使用

RewriteRule ^vault/displayimage\.php$ photos/%1/#? [R=301,L,NE]

适用于Chrome,Safari和Opera,但在Firefox中。我目前无法测试IE。

另请注意,您最终会在网址中找到#。这比#top_pictures好,但不完全干净。

真正解决这个问题的唯一方法是使用一些JavaScript。