我正在尝试写一条说
的规则xyz.com/hotels_in_someplace将指向xyz.com/test.php?place=someplace
在我的htaccess中使用以下内容
RewriteEngine On
RewriteBase /
RewriteRule ^hotels_in_([a-z]+)$ test.php?place=$1 [L]
但它不起作用,我无法弄清楚为什么,我正在运行一个wamp服务器作为开发。当我试图运行xyz.com/test.php?place=someplace(目录中没有htaccess)时它可以工作,但我怀疑我的规则是错误的。
附加: 哎呀....我的哑屁股错误,mod_rewrite没有启用......
答案 0 :(得分:1)
尝试没有终点线锚($)
RewriteRule ^/hotels_in_([a-z]+) /test.php?place=$1 [L]
另外,您是否允许解析.htaccess文件?
答案 1 :(得分:0)
更新:之前我没有注意到问题中的RewriteBase所以我对前导斜杠的观点是null。但是RewriteRule可以在我的机器上运行。
尝试:
RewriteRule ^hotels_in_([a-z]+)$ /test.php?place=$1 [L]
test.php的路径需要前导斜杠。您进行重写的方式将被重定向到xyz.com/path/to/web/docs/on/machine/test.php,这不是您想要的。 :)
此外,如果您在测试中包含尾部斜杠。
上述规则与xyz.com/hotels_in_someplace/
不匹配。
要匹配前导斜杠,这应该有效:
RewriteRule ^hotels_in_([a-z]+)/?$ /test.php?place=$1 [L]
答案 2 :(得分:0)
你的例子适合我。可能需要进行一些小的调整(参见我的示例,其中捕获大写字母,连字符和下划线(对于具有多个单词的国家/地区的酒店(United-state,united_states))和尾随斜杠)。
RewriteRule ^hotels_in_([A-Za-z_-]*)(/?)$ /test.php?place=$1
希望有所帮助。