Apache 2 mod_rewrite问题

时间:2010-10-02 08:03:24

标签: mod-rewrite apache2

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^browse/videos/(.*)/(.*)/(.*)/(.*) /videos.php?sortby=$1&filter=$2&page=$3&title=$4
RewriteRule ^videos/(.*)/(.*) /playvideo.php?videoid=$1&title=$2
</IfModule>

url www.example.com/browse/videos/z/0/1/LastAdded转到videos.php

但是网址www.exaple.com/videos/10/play.html也会转到videos.php而不是playvideo.php

为什么?

3 个答案:

答案 0 :(得分:0)

不确定为什么会发生这种情况,但无论如何你应该使用这样的东西。

RewriteRule ^browse/videos/(.+)/(.+)/(.+)/(.+) /videos.php?sortby=$1&filter=$2&page=$3&title=$4 [L]
RewriteRule ^videos/(.+)/(.+) /playvideo.php?videoid=$1&title=$2 [L]

答案 1 :(得分:0)

这可能是由MultiViews引起的。尝试使用以下命令禁用它:

Options -MultiViews

此外,您应使用比.*更具体的模式,例如[^/]+

RewriteRule ^browse/videos/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ /videos.php?sortby=$1&filter=$2&page=$3&title=$4
RewriteRule ^videos/([^/]+)/([^/]+)$ /playvideo.php?videoid=$1&title=$2

答案 2 :(得分:0)

它对我有用。要找出它不适合您的原因,您应该启用mod_rewrite logging:

RewriteLogLevel 9
RewriteLog logs/rewrite.log

然后你应该试着去理解那里写的是什么。如果您不理解,请在此处发布,我们将尝试解释它。