我应该在 htaccess RewriteRule 中使用什么正则表达式来匹配 URI 中的 %?

发布于 2024-12-14 03:49:12 字数 620 浏览 0 评论 0原文

当用户在浏览器中输入以下内容时: http://cauzoom.com/collection/something0%d 我希望他们最终到达这里: http://cauzoom.com/collection/index.html?pname=something

我当前的 htaccess 重写规则如下所示:

RewriteRule ^collection/([a-z0-9\-\%]+)$ collection/index.html?pname=$1 [NC,L]

...但是失败了。当我这样做时:

RewriteRule ^collection/(.+)$ collection/index.html?pname=$1 [NC,L]

...它也失败了。我知道 % 是受保护的正则表达式字符,但是将文字“\”放在它前面应该可以工作,对吧?有什么建议吗?

When a user types this into a browser:
http://cauzoom.com/collection/something0%d
I want them to end up here:
http://cauzoom.com/collection/index.html?pname=something

My current htaccess rewrite rule looks like this:

RewriteRule ^collection/([a-z0-9\-\%]+)$ collection/index.html?pname=$1 [NC,L]

... but that fails. When I do this:

RewriteRule ^collection/(.+)$ collection/index.html?pname=$1 [NC,L]

... it also fails. I know % is a protected regexp character, but putting the literal "\" in front of it SHOULD work, right? Any suggestions?

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

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

发布评论

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

评论(1

分开我的手 2024-12-21 03:49:12

% 不是正则表达式元字符,问题是它用于对 URL 中的字符进行编码,因此您不能只在 URL 中使用文字 %意味着开始一个识别特殊字符的序列:参考

如果你想有一个真正的% 在您必须将 URL 编码为 %25

% isn't a regular expression metacharacter, the problem is that it's used to encode characters in URLs, so you can't just use a literal % in an URL as it's meant to start a sequence which identifies a special character: reference

If you want to have a real % in an URL you have to encode it as %25.

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