Apache指令被覆盖

时间:2015-08-24 19:48:08

标签: apache .htaccess mod-rewrite

这有点奇怪。我已经设置了以下.htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Allow any files or directories that exist to be displayed directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    # Rewrite short asset URLs
    RewriteRule ^(css|js|img|fonts)/(.*)$ /static/assets/$1/$2 [L]

    # Rewrite all other URLs to index.php/URI
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

因此,静态资产直接提供给客户端,而无需通过CMS进行路由。我有完全相同的指令在其他网站上工作 但是在这里,一切仍然被重写为index.php并返回404错误。 当我注释掉index.php-directive时,它可以工作。

如果&#34; [L] ast规则&#34;这是我所期望的。旗帜会丢失,但很明显,它存在。我也试过没有正则表达式的规则,添加和删除标记或斜杠,改变了位置......老实说,这有点令人尴尬,但我现在不再有任何想法...

1 个答案:

答案 0 :(得分:1)

请尝试以下规则:

RewriteEngine On

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# Rewrite short asset URLs
RewriteRule ^(css|js|img|fonts)/(.*)$ static/assets/$1/$2 [L,NC]

# Rewrite all other URLs to index.php/URI
RewriteRule ^(.*)$ index.php?/$1 [L]