【发布时间】:2010-10-27 17:28:46
【问题描述】:
我只是在学习 mod_rewrite 和 regex 的东西,而我正在尝试做的是将任意名称的变量、任意数量的变量和值传递到脚本中,并将它们转发到不同的脚本。
这是我目前所拥有的:
RewriteEngine on
RewriteRule ^script\$(.*[\])? anotherscript?ip=%{REMOTE_ADDR}&$1 [L]
除了我传递的参数之一是 URL 和 http:// 之后的 // 总是被剥离成一个斜杠之外,这一切似乎都有效。
例如,我做
脚本$url=http://www.stackoverflow.com
然后它重定向到:
anotherscript?ip=127.0.0.1&url=http:/www.stackoverflow.com
第二个脚本在单斜杠上阻塞。
我意识到保留双斜杠与人们通常使用 mod_rewrite 所做的完全相反。有什么办法可以保留双斜线吗?
编辑:在 Gumbo 的帮助下找到了解决方案。
RewriteCond %{THE_REQUEST} ^GET\ (.*)/script\$([^\s]+)
RewriteRule ^script\$(.*) anotherscript?ip=%{REMOTE_ADDR}&%2 [L]
我必须在 RewriteCond 上的 /script 前面添加 (.*),一旦我这样做了,它就消除了 404 错误,然后只需传递匹配项即可。
【问题讨论】:
标签: regex mod-rewrite