2009-08-20 80 views
1

任何人都可以发现这个URL重写有什么问题吗?我不能让它通过什么就(脚本加载,但没有传递参数):这个mod_rewrite规则有什么问题?

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

我要地图“归档/浏览/”到“?archive.php行动=浏览” 。

+0

你为什么接受茶茶的答案吗?我以为你不能得到任何传递给'$ _GET'的东西? – Gumbo 2009-08-26 04:10:59

+0

因为它解决了大多数需要我想要的结果的情况(尽管不是我的具体情况)。通过接受它,具有类似目标的其他用户将更容易找到最可能的解决方案。 这是目前最好的答案,但如果找到更有效的解决方案,我将乐意切换并接受不同的答案。 – Wilco 2009-08-26 17:24:38

回答

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

会改写后什么/archive/archive.php?action=test/dir/path

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

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

尝试使用禁用它:

Options -MultiViews 
+0

内部组仍然是1美元? – 2009-08-20 22:12:14

+0

虽然没有任何通过,你的场景更有意义 – 2009-08-20 22:15:07

+0

@Vinko Vrsalovic:该选项不会改变任何有关mod_rewrite。它只是停止Apache寻找类似的命名文件。另一种解决方案是重命名文件,如果MultiViews真的是这种行为的原因。 – Gumbo 2009-08-20 22:17:05