如果我使用:
RewriteEngine On
RewriteRule ^.* controller.php
它会将所有请求发送到controller.php。但是,如果controller.php包含CSS文件(/assets/css/main.css),那么它将无法工作,因为当浏览器调用它时,它将重定向到controller.php。有没有办法解决这个问题?
如果我使用:
RewriteEngine On
RewriteRule ^.* controller.php
您可以添加一个条件,以排除可以映射到实际存在的文件的URL:
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
试试这个:
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.css$
RewriteRule ^.* controller.php
未经测试但应该可以工作。