为什么.htaccess会重写包含'#';失败?

为什么.htaccess会重写包含'#';失败?,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,目标:匹配URL并将其重写为查询字符串 问题:替换字符串中的“#”(及其后的所有内容)似乎被忽略 以下是我所拥有的: 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]

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

问题:替换字符串中的“#”(及其后的所有内容)似乎被忽略

以下是我所拥有的:

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
,但从未应用url参数(
d=&n=


目标是允许像这样的url:
somewehere.com/55C26838E4B08B032B432C4/1/
触发这样的查询:
somewehere.com/web2#list?d=54668494e4b09ffed41ff167&n=1
哈希标记仅用于客户端。尝试重定向您的请求,并指定
R
标志

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

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

谢谢。是的,这可能会正确地创建页面(使用参数),但我需要在地址栏中显示原始url(somewehere.com/55c26838e4b08b032b432c4/1/),而不是更改为somewehere.com/web2#list?d=54668494e4b09ffed41ff167&n=1为什么需要这个?hashtag(以及从
#
上的所有内容)永远不会发送到服务器,因此您无法在服务器端对其执行任何操作。您的应用程序中是否有任何业务逻辑?我需要一个由参数创建的唯一页面,但显示的url中不能有“#”。为什么?我想添加一个注释工具,它不能使用包含“#”字符的URL。欢迎使用其他方法。那么,只传递
d
n
参数,而不使用hashtag有什么问题?这样,您就可以在服务器端将它们作为
GET
参数来使用“在本例中,是一个jQuery移动页面。因此,将不会显示正确的页面。