.htaccess RewriteRule 500内部服务器错误

时间:2013-12-13 15:33:51

标签: php regex apache .htaccess mod-rewrite

我需要将图像文件重定向到diferente文件夹。我尝试使用:


    RewriteCond %{HTTP_HOST} ^example.com$ [NC]
    RewriteCond %{REQUEST_URI} (.*)\.(png|gif|jpg|jpeg)
    RewriteRule ^(.*)$ images/$1    [L]

这导致500内部服务器错误,但以下工作:


    RewriteCond %{HTTP_HOST} ^example.com$ [NC]
    RewriteCond %{REQUEST_URI} (.*)\.(png|gif|jpg|jpeg)
    RewriteRule ^(media/1.jpg)$ images/$1   [L]

这也有效:


    RewriteCond %{HTTP_HOST} ^example.com$ [NC]
    RewriteCond %{REQUEST_URI} (.*)\.(png|gif|jpg|jpeg)
    RewriteRule ^(.*)$ images/media/1.jpg   [L]

我无法弄清楚为什么会这样,有什么帮助?

1 个答案:

答案 0 :(得分:2)

由于循环,你得到500错误。 Apache继续使用mod_rewrite模块运行重写的URI,直到它们无法匹配任何规则。

尝试使用此规则并进行更好的检查:

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteCond %{REQUEST_URI} !/images/ [NC]
RewriteRule \.(png|gif|jpe?g)$ images%{REQUEST_URI} [L,NC]

仅当URI中不存在/images/时,才会重写图像网址。