php - HTAccess-Mod_rewrite

标签 php .htaccess mod-rewrite

如果我使用:

RewriteEngine On
RewriteRule ^.* controller.php

它会将所有请求发送到 controller.php 但是如果 controller.php 包含一个 css 文件 (/assets/css/main.css) 那么它就不会工作,因为当浏览器调用它时,它只会重定向到 controller.php

有什么办法可以解决这个问题吗?

最佳答案

您可以添加 condition排除可以映射到实际存在文件的 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

关于php - HTAccess-Mod_rewrite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1909834/

相关文章:

php - 使用相同的列数和名称从一个表复制到另一个表

PHP 作为 thttpd 模块与 CGI 在内存使用方面的对比

.htaccess - seo url 重写规则 - 使最后一个参数可选

apache - htaccess - 当请求的 URL 是我系统上的文件夹时,重写规则不起作用

.htaccess - 仅当确切的 url 匹配时如何重定向?

PHP MySQL Cursor 实现及其管理内存的方式

php ajax 下拉列表

php - Apache:mod_rewrite 不指向一个地址

php 使用 htaccess mod_rewrite 检查 file_exists() 是否存在

apache - 使用 .htaccess 重写服务器特定 URL 的方法不遵守 RewriteCond