在 .htaccess 搜索中使用井号 (#)
所以这件事的要点是, 我有一个文件:
search.php
当我转到:
search.php?search=%23HashTag
搜索返回: #HashTag
但是当我使用 .htaccess 方法时:
/search/%23HashTag
没有返回任何内容。我已经通过在搜索中稍后放置数字符号进行了测试,它会返回到该点。
这就是我所拥有的:
RewriteRule ^search/([^\.]+)$ search.php?search=$1 [NE,L]
我做错了什么......?
So the jist of this is,
I have a file:
search.php
When I goto:
search.php?search=%23HashTag
The search returns: #HashTag
But when I use my .htaccess method:
/search/%23HashTag
Nothing is returned. And i've tested by putting the number sign later in the search and it returns upto that point.
This is what I have:
RewriteRule ^search/([^\.]+)$ search.php?search=$1 [NE,L]
What am I doing wrong..?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将您的标志更改为
[NE,B,L]
。http://httpd.apache.org/docs/current/rewrite/flags .html#flag_b
mod_rewrite 在应用转换之前对 url 进行转义。我不确定为什么它会在哈希后丢失任何内容(也许它会将其重新解释为 url,并丢弃该片段?)。无论如何,[B] 在通过重写规则运行 url 之前都会重新转义该 url。
Change your flags to
[NE,B,L]
.http://httpd.apache.org/docs/current/rewrite/flags.html#flag_b
mod_rewrite unescapes the url before applying transformations. I'm not sure why it loses anything after the hash (maybe it re-interprets it as a url, and discards the fragment?). In any case, [B] re-escapes the url before running it through the rewrite rule.
将其替换为
\%23
可以吗?(明确:反对在 .htaccess 文件中写入 #)
Does replacing it with
\%23
work ok?(Clarity: Opposed to writing the # in the .htaccess file)