无扩展和 PHP 处理的 mod_rewrite 配置

无扩展和 PHP 处理的 mod_rewrite 配置

我正在尝试删除扩展并启用访问,以便对“/”、“/index”和“/index.ext”的请求都返回相同的资源。

同时,我希望每个这样的资源都经过包含页眉、页脚的 PHP 脚本并执行其他处理,然后将其作为他们请求的资源发送回客户端。

我该如何仅使用 .htaccess 来实现这一点?即使关闭了 MultiViews,我还是遇到了瓶颈,每次尝试都会导致无限重写循环。

答案1

RewriteEngine on

# Route all requests on non-existent directories and files to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php [L,QSA]

你也可以查看AskApache 的优秀 HowTo了解更多 mod_rewrite 配方。

答案2

排除静态文件(.js、.css 等):

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php

排除相同的静态文件但允许真实文件和目录:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php

根据Zend 框架

相关内容