2

我有一个 .htaccess 文件,它被配置为几乎将所有请求路由到我的根 index.php 文件,除了一组特定的文件扩展名(图像、css、js 等)。但是,我需要稍微调整一下该逻辑,我希望将对那些排除的文件扩展名之一的请求路由到 index.php,如果它包含在特定目录中(可能在该目录的子文件夹中)。目前我有:

RewriteEngine on
RewriteCond $1 !\.(gif|jpg|png|ico|css|js|swf|wav|mp3|less|cur)
RewriteRule ^(.*)$ index.php/$1 [L]

如果 .css 文件的请求位于 .css 文件的根目录内,我需要做什么RewriteCond才能确保它们被重写为 index.php /docs。例如,我希望请求/docs/subfolder/anotherfolder/myfile.css路由到 index.php,但请求/assets/css/global.css继续不路由到 index.php?

4

2 回答 2

4

您可以使用该[OR]标志添加额外的 css 条件(即使它不符合第一个条件):

RewriteEngine on
RewriteCond $1 !\.(gif|jpg|png|ico|css|js|swf|wav|mp3|less|cur) [OR]
RewriteCond %{REQUEST_URI} ^/docs/.*\.css$
RewriteRule ^(.*)$ index.php/$1 [L]

这里的[OR]标志逻辑上“或”是两个条件。因此,即使请求的文件以 ''css'' 结尾,也会检查第二个条件。我给出的示例正则表达式只是说它必须以 . 开头/docs/并以.css. 如果满足,则不需要第一个条件,并且请求被路由到index.php.

于 2013-04-13T12:33:10.073 回答
1

你可以有两个规则。第一条规则docs通过index.php. 其他一切都将由第二条规则处理

RewriteEngine on

RewriteRule ^docs/.*\.css$ index.php/$0 [L]

RewriteCond $0 !\.(gif|jpg|png|ico|css|js|swf|wav|mp3|less|cur)
RewriteRule ^.*$ index.php/$0 [L]
于 2013-04-13T12:39:39.103 回答