我正在尝试删除扩展并启用访问,以便对“/”、“/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 框架。