我试着在网站上查看了一些mod_rewrite问题,但没有找到我的问题的答案(大多数问题的标题都是"mod_rewrite不起作用“,这无助于使这项任务变得更容易,希望我的标题更有帮助)。
这是my /somepath/..htaccess的内容:
RewriteEngine On
RewriteRule ^go/(.*) /cgi-bin/goto.cgi?$1
# ^^^ WORKS: /somepath/go/200001..
RewriteRule ^go?(.*) /cgi-bin/goto.cgi$1
# ^^^ WORKS: /somepath/go?200001..
ErrorDocument 404 /cgi-bin/goto.cgi?error404
在测试中,我让goto.cgi只返回$ENV{QUERY_STRING}、$ENV{QUERY_STRING_UNESCAPED}和$ENV{PATH_INFO}。目前,上述规则意味着当urls:
/somepath/go/200001
/somepath/go?200001
/somepath/go?/200001
被访问,但当
/somepath/go/?200001
访问,在这种情况下,$ENV{QUERY_STRING}、$ENV{QUERY_STRING_UNESCAPED}和$ENV{PATH_INFO}为空。
所以问题是,我能用什么规则
/somepath/go/?200001
给我的脚本200001甚至是/?200001部分?
发布于 2014-08-10 23:55:43
第一条规则是销毁失败示例的查询字符串,因为$1
将为空,替换中的空查询字符串将删除任何现有的查询字符串。
第二条规则是胡言乱语。
RewriteRule ^go/(.+)$ /cgi-bin/goto.cgi?$1
RewriteRule ^go/?$ /cgi-bin/goto.cgi
https://stackoverflow.com/questions/25234059
复制相似问题