如何将所有url请求重定向到index.php / path / variables,除了以img /?开头的那些请求。

时间:2012-09-27 19:08:48

标签: regex mod-rewrite rewrite apache

我有一些简单的RewriteRules将所有路径变量重定向到/index.php。但是现在我想要为所有/img/(.*)网址制作一个例外。

这是一个片段。请指教。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1 [L]

我尝试在最后一个catchall行的上方添加RewriteRule ^img/(.*) img/index.php/$1 [L],但它无效。

我所追求的结果是这样的:

url      --> script / path variables
====================================
/abc/def --> /index.php/abc/def
/img/abc --> /img/index.php/abc

你能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

您需要将其添加到最后一个catchall行的上方,但保留catchall所需的条件,并同样复制它们以用于您自己的/img/路由:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^img/(.*) img/index.php/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1 [L]