这样的事情似乎不起作用的原因是什么:
php文件:display.php(这是一个空文件)
.htaccess具有以下内容:
RewriteEngine on
RewriteRule ^/?([a-zA-Z_]+)/([a-zA-Z_]+)/([a-zA-Z_]+)$ display.php?country=$1&state=$2&city=$3 [L]
当我尝试:
http://somewebsite.com/display.php?country=USA&state=Minnesota&city=Minneapolis
它不会重写为
http://somewebsite.com/USA/Minnesota/Minneapolis
为什么?
谢谢!
答案 0 :(得分:1)
如果您正尝试重写:
http://somewebsite.com/display.php?country=USA&state=Minnesota&city=Minneapolis
为:
http://somewebsite.com/USA/Minnesota/Minneapolis
然后你的重写规则是倒退的 - the format for RewriteRule
lines是:
RewriteRule <pattern to match> <substitution>
因此,您希望模式匹配以引用/display.php...
并将替换作为新URI /country/state/city
。此外,您需要使用RewriteCond
条件来匹配查询字符串。你的规则需要看起来像这样:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^country=([a-zA-Z]+)&state=([a-zA-Z]+)&city=([a-zA-Z]+)$
RewriteRule ^/display.php$ /%1/%2/%3? [R]
(注意?
末尾的尾随RewriteRule
- 这表示应删除查询字符串。如果没有尾随?
,则会重复查询字符串。)
答案 1 :(得分:0)
您可能在目标网址中缺少正斜杠。