【发布时间】:2011-03-29 18:25:48
【问题描述】:
所以我正在为一个网站开发一个 CSS/JS 压缩系统,它基本上具有以下 htaccess
RewriteEngine On
...
RewriteRule ^css/images/(.*)$ images/site/$1?%{QUERY_STRING} [L]
RewriteRule ^css/([0-9a-fA-F]{32})$ assets.php?hash=$1 [L]
RewriteCond %{HTTP_HOST} ^www.site.com [NC]
RewriteRule ^(.*)$ http://site.com/$1 [L,R=301]
RewriteRule ^([a-zA-Z0-9_.-]+)$ index.php?url=$1&%{QUERY_STRING} [L]
php_flag register_globals off
php_flag magic_quotes_gpc off
php_flag register_long_arrays off
# 404 Handler
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1&%{QUERY_STRING}
现在 assets.php 没有收到 hash 调用,而是 index.php - 如果我删除 RewriteRule ^([a-zA-Z0-9_.-]+)$ index.php?url=$1&%{QUERY_STRING} [L] 行
它工作正常,但我不知道为什么 - 资产上的 [L] 标志不应该重写 RewriteRule ^css/([0-9a-fA-F]{32})$ assets.php?hash=$1 [L] 阻止执行任何进一步的重写吗?我对这里发生的事情感到困惑。
如果您对此有所了解,我们将不胜感激。
【问题讨论】:
标签: apache .htaccess mod-rewrite