为什么包含'#'的.htaccess RewriteRule会失败?

时间:2015-08-06 15:08:10

标签: .htaccess mod-rewrite

目标:匹配网址并将其重写为查询字符串。

问题:看起来替换字符串中的“#”(及其后面的所有内容)都被忽略了。

这就是我所拥有的:

RewriteEngine On
RewriteRule ^([^\.]+)$ $1.html [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+) web2.html#list?d=$1&n=$2 [L,NE]

这将转到web2.html,但不会应用网址参数(d= & n=)。

目标是允许像somewehere.com/55c26838e4b087b032b432c4/1/这样的网址触发这样的查询:somewehere.com/web2#list?d=54668494e4b09ffed41ff167&n=1

1 个答案:

答案 0 :(得分:2)

哈希标记仅在客户端使用。尝试重定向您的请求,并指定R标记。

RewriteRule ^([^/]+)/([^/]+) web2.html#list?d=$1&n=$2 [R=301,NE,L]

如果这对您不起作用,请查看HTML5 History API。我认为pushState方法可以帮助你。