mod_rewrite无法正常工作 - 访问静态资源

时间:2011-12-30 22:22:04

标签: php mod-rewrite

现在我的网站根目录中有一些文件夹(img,css,js和ico)。但是,我想将它们移动到名为public_html的新目录中。例如,代替图像文件夹位于/ img中,它将改为位于/ public_html / img中。但我这样做有问题,我怀疑这是我的.htaccess文件的问题。

Options -Indexes
Options +FollowSymLinks
RewriteEngine On

ErrorDocument 404 static/404.html
ErrorDocument 403 static/403.html


RewriteCond %{REQUEST_FILENAME} !-f

# ---------- Custom Routes ----------------



# -----------------------------------------

RewriteRule ^(js|css|img|ico)\/(.+)$ public_html/$1/$2
RewriteRule ^(.*)$  index.php?r=$1  [L,QSA]

我可以访问/public_html/css/style.css就好了,但是当我添加第一个RewriteRule行并尝试访问/css/style.css时,它不起作用。

任何人都可以找出原因吗?谢谢。

1 个答案:

答案 0 :(得分:1)

[L]标志添加到第一个规则。否则,它会跳至第二个规则并尝试将其传递到r=index.php。由于public_html

,通过RewriteCond %{REQUEST_FILENAME} !-f访问它是有效的
RewriteRule ^(js|css|img|ico)\/(.+)$ public_html/$1/$2 [L]

# Update: Try using the RewriteCond before this line 
# as well as where you have it earlier
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$  index.php?r=$1  [L,QSA]