如何在.htaccess中转义哈希(#)字符?

时间:2016-09-03 07:07:35

标签: php apache .htaccess

我在.htaccess中有以下内容:

RewriteRule ^a/(.+)$ index.php?data=$1 [L]

很简单,适用于大多数情况,除非我使用以下网址:

http://example.com/a/hello%23abc

我希望将data GET变量设置为hello#abc,但它会中断。我认为它打破了因为Apache“unes​​capes”字符,使网址如下:

index.php?data=hello#abc

这可能是为什么它将data GET变量设置为hello

有什么方法可以解决这个问题吗?

感谢。

1 个答案:

答案 0 :(得分:2)

使用 [B] 标志应该对您的情况有所帮助(在Apache 2.2中可用

  

[B]标志指示 RewriteRule 转义非字母数字   应用转换前的字符。

RewriteRule ^a/(.+)$ index.php?data=$1 [L,B]

http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_b