如果我使用:
RewriteEngine On
RewriteRule ^.* controller.php
它会将所有请求发送到controller.php 但是如果controller.php包含一个css文件(/assets/css/main.css),那么它将无法工作,因为当浏览器调用它时,它只会重定向到controller.php
我有办法解决这个问题吗?
答案 0 :(得分:6)
您可以添加condition以排除可以映射到实际现有文件的网址:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* controller.php
-f
关键字将测试%{REQUEST_FILENAME}
中的绝对路径是否是文件系统中现有常规文件的路径,而!-f
只是反向。
但是如果你有一个想要排除的固定目录列表,你也可以这样做:
RewriteCond $0 !^(assets|foo|bar)/
RewriteRule ^.* controller.php
此条件测试整个RewriteRule
模式(引用$0
)的匹配是否既不以assets/
也不是foo/
也不是bar/
开头。如果您不想处理匹配,您也可以直接在RewriteRule
指令中使用否定表达式:
RewriteRule !^(assets|foo|bar)/ controller.php
答案 1 :(得分:0)
试试这个:
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.css$
RewriteRule ^.* controller.php
未经测试但应该有效。