【发布时间】:2018-07-13 22:13:50
【问题描述】:
我有一个位于 http://localhost/dir1/dir2/shift.php 的 PHP 脚本,我将 url 作为参数传递,如下所示:http://localhost/dir1/dir2/https://google.com 但我收到了禁止访问错误。当我删除 : 它工作正常。我用一些在线正则表达式验证工具检查了我的正则表达式,它说它应该可以工作,但它没有
RewriteEngine on
RewriteRule ^dir1\/dir2\/([A-Za-z0-9\!\@\#\$\%\^\&\*\(\)\_\-\+\=\{\}\[\]\;\:\'\"\<\,\>\.\?\|\~\`\s\/\\]+)\/? dir1\/dir2\/shift.php?url=$1 [L]
任何帮助都会很棒。谢谢!
【问题讨论】:
-
该模式正在使用一些 \u\n\n\e\c\e\s\s\a\r\y \e\s\c\a\p\i\n\ g 在字符类中。
-
您可以使用 regex101 之类的东西来仔细检查正则表达式吗?不过对我来说看起来过于复杂。
-
注意保留字符。 stackoverflow.com/q/1547899/2943403 url 有规则——不仅可以使用哪些字符,还可以在 where 使用它们。你想要的网址对我来说似乎奇怪。
-
这是我第一次真正处理正则表达式,所以我还在学习。我确实尝试了 regex101,它说它是有效的。基本上我只是想将
dir1/dir2/之后的所有内容作为参数传递给 shift.php。 PHP 脚本将处理验证 url。 -
:可能会导致 url2filesystem 映射错误为禁止符号。这应该在非目录上下文中工作。
标签: php regex apache .htaccess mod-rewrite