这个mod_rewrite规则有什么问题?

时间:2009-08-20 22:08:42

标签: apache .htaccess mod-rewrite

有人能发现这个URL重写有什么问题吗?我无法将它传递给GET(脚本加载,但没有传递参数):

RewriteRule ^archive(/(.*))?$ archive.php?action=$1 [QSA,L]

我想将“archive / browse /”映射到“archive.php?action = browse”。

3 个答案:

答案 0 :(得分:3)

启用MultiViews时,您可能会遇到一些冲突。如果它已启用,Apache首先会尝试查找具有相似名称的文件以将请求映射到将其传递给mod_rewrite之前。因此,/archive/browse/的请求会在/archive.php/browse/结束,然后mod_rewrite可以将其映射到您的/archive.php?action=browse

尝试使用以下命令禁用它:

Options -MultiViews

答案 1 :(得分:1)

RewriteEngine On
RewriteRule ^archive/(.*)$  archive.php?action=$1 [QSA,L]

会在/archive/archive.php?action=test/dir/path

之后重写任何内容

答案 2 :(得分:0)

RewriteRule ^archive/([^/]*) archive.php?action=$1 [QSA,L]