为什么我的htaccess规则不起作用,除非它被定向到PHP文件

时间:2012-10-11 07:46:19

标签: .htaccess apache

我的htaccess文件位于“myappname”文件夹下。

我正在尝试重定向此路径;

myappname/CONTROLLER_NAME/ANYFILE.(css|js|gif|jpg|png)

到那条路

myappname/views/default/tpl/CONTROLLER_NAME/ANYFILE.(css|js|gif|jpg|png)

这是我的HTACCESS规则

RewriteEngine on
RewriteRule ^(.*)/(.*)\.(css|js|gif|jpg|png)$ views/default/tpl/$1/$2.$3 [L,NC]

但除非我将其重定向到像

这样的PHP文件,否则它会给我HTTP 500
RewriteEngine on
RewriteRule ^(.*)/(.*)\.(css|js|gif|jpg|png)$ views/default/tpl/$1/index.php?a=$2.$3 [L,NC]

我的规则有什么问题?我对htaccess很新,而且我有一个很大的潜力,我错过了一些小事。

1 个答案:

答案 0 :(得分:0)

这是因为您的目标与正则表达式匹配:

views/default/tpl/foo/bar.png

匹配正则表达式:

^(.*)/(.*)\.(css|js|gif|jpg|png)$

因此规则只是保持循环。您需要添加条件:

RewriteCond %{REQUEST_URI} !^/views/default/tpl

正好位于RewriteRule

之上