我有一个.htaccess文件,配置为几乎将所有请求路由到我的根index.php文件,除了一组特定的文件扩展名(images,css,js,ect)。但是我需要稍微调整一下这个逻辑,我希望将其中一个排除文件扩展名的请求路由到index.php,如果它包含在特定目录中(可能位于该目录的子文件夹中)。目前我有:
RewriteEngine on
RewriteCond $1 !\.(gif|jpg|png|ico|css|js|swf|wav|mp3|less|cur)
RewriteRule ^(.*)$ index.php/$1 [L]
如果.css文件的请求在RewriteCond
的根目录内某处,则需要{.1}确保将.css文件的请求重写为index.php。例如,我希望请求/docs
路由到index.php,但请求/docs/subfolder/anotherfolder/myfile.css
继续不路由到index.php?
答案 0 :(得分: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]
标志在逻辑上是“或”是2个条件。因此,即使请求的文件以''css''结尾,也会检查第二个条件。我给出的示例正则表达式只是说它必须以/docs/
开头,并以.css
结尾。如果已满,则第一个条件不需要,请求将路由到index.php
。
答案 1 :(得分:1)
您可以有两条规则。第一个规则通过docs
将所有CSS文件路由到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]