2009-07-13 87 views
0

我想写一个规则,说基本mod_rewrite的问题

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的wasnt启用...

+0

它究竟如何不工作? – 2009-07-13 16:07:02

回答

0

更新:之前我没有,所以我对斜线点为空注意到问题的RewriteBase。然而,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] 
1

尝试没有行尾锚($)

RewriteRule ^/hotels_in_([a-z]+) /test.php?place=$1 [L] 

另外,你允许解析的.htaccess文件?

0

你的例子适合我。可能想进行一些小的调整(参见我的示例,该示例捕获大写字母,连字符和下划线(适用于具有多个单词(united-states,united_states))和尾随正斜杠的国家/地区的酒店。

RewriteRule ^hotels_in_([A-Za-z_-]*)(/?)$ /test.php?place=$1 

希望有所帮助。