.htaccess 基本模块重写问题

.htaccess 基本模块重写问题,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我试图写一条规则,上面写着 xyz.com/hotels\u in\u 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.ph

我试图写一条规则,上面写着

xyz.com/hotels\u in\u 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没有启用…

更新:我之前没有注意到问题中的RewriteBase,所以我关于前导斜杠的观点是空的。不过,重写规则在我的机器上确实有效


尝试:

test.php的路径需要前导斜杠。您执行重写的方式将被重定向到xyz.com/path/to/web/docs/on/machine/test.php,而这不是您想要的。:)

另外,如果您正在测试,则在测试中包含尾部斜杠

上述规则与xyz.com/hotels\u in\u someplace/不匹配

要匹配前导斜杠,应执行以下操作:

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

尝试不使用端点定位($)


另外,您是否允许解析.htaccess文件?

您的示例对我来说很好。可能需要做一些小的调整(参见我的示例,它捕获了大写字母、连字符和下划线(适用于包含多个单词(美国、美国)的国家/地区的酒店)和尾随的正斜杠)


希望这能有所帮助。

它到底是如何工作的?您真的有“RewriteEngine On RewriteBase/”这一行吗?我已经在我的服务器上测试过了,它工作正常。您是否尝试过类似于
RewriteRule^的简单规则http://example.com/ [L,R]
RewriteRule ^hotels_in_([a-z]+)/?$ /test.php?place=$1 [L]
RewriteRule ^/hotels_in_([a-z]+) /test.php?place=$1 [L]
RewriteRule ^hotels_in_([A-Za-z_-]*)(/?)$ /test.php?place=$1