RewriteRule和Hash

时间:2014-11-02 21:09:41

标签: .htaccess mod-rewrite hash

我的网页上有这样丑陋的网址

DOMAINNAME/gallery.php#filter=.filtername

我希望它们看起来像这样

DOMAINNAME/artwork/filtername/

我已经在我的.htaccess文件中尝试了这个

RewriteRule ^artwork/([^.]+)/ gallery.php#filter=.$1 [NE]

但这并不能解决问题。它只是DOMAINNAME/artwork/

2 个答案:

答案 0 :(得分:1)

如果您要在网址中添加#,则必须执行完全重定向,因为#部分仅在浏览器中解释:

RewriteRule ^artwork/([^./]+)/?$ /gallery.php#filter=.$1 [L,NE,NC,R=302]

答案 1 :(得分:1)

我只是在我的环境中尝试了这一点,看起来,当它进行内部重写时,Apache会吞下包括#之后的所有内容。无论你是否使用标记NE,都会发生这种情况。

所以唯一的解决方案似乎是使用常规查询字符串,例如

RewriteRule ^artwork/([^.]+)/ gallery.php?filter=.$1 [L]

或用斜杠分隔过滤器

RewriteRule ^artwork/([^.]+)/ gallery.php/filter=.$1 [L]