RewriteRule 和数字符号 “#”

发布于 2024-11-08 22:21:48 字数 335 浏览 0 评论 0原文

我试图通过 RewriteRule 创建一个友好的 URL,但它始终忽略 # 作为变量值的一部分。
.htaccess 上的行就这么简单

RewriteRule ^key/(.+)/$ index.php?key=$1  

,请求的 URL 是,

http://www.example.com/key/c%23/  

但我只获取 c 作为 get 变量,而不是 c%23

我到底做错了什么?

I'm trying to make a friendly URL through RewriteRule but it keeps ignoring # as part of the variable value.
The line on .htaccess is as simple as this

RewriteRule ^key/(.+)/$ index.php?key=$1  

and the requested URL is

http://www.example.com/key/c%23/  

but I'm only getting c as get variable and not c%23.

What exactly am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

物价感观 2024-11-15 22:21:48

最后,经过一番挖掘,我终于成功了。

它只需要 RewriteRule 上的 B 标志来转义非字母数字字符,例如 #

RewriteRule ^key/(.+)/$ index.php?key=$1 [B]

Finally after some digging, I managed to pull this off.

It just needs the B flag on RewriteRule to escape non-alphanumeric characters such as #

RewriteRule ^key/(.+)/$ index.php?key=$1 [B]
向地狱狂奔 2024-11-15 22:21:48

%23 是一个哈希符号 (#),因此它(及其后面的任何内容)实际上不会被 mod_rewrite 解析。因此,实际的 URL 是 http://www.foo.com/key/c,不含任何 %23。不过,其他破折号代码工作正常。

%23 is a hash symbol (#), so it (and anything after it) doesn't actually get parsed by mod_rewrite. The actual URL therefore is http://www.foo.com/key/c, without any %23. Other dash-codes work fine, though.

彻夜缠绵 2024-11-15 22:21:48

%23 是井号 (#)。我猜测浏览器将哈希解释为锚点,而不是将其传递到服务器。例如,如果您用户http://www.foo.com/key/c%20/,您将得到“c[space]”。

%23 is a hash mark (#). I'm guessing the browser is interpreting the hash as an anchor and not passing it on to the server. For instance, if you user http://www.foo.com/key/c%20/ you'll get "c[space]".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文