【问题标题】:Failsafe for when mod_rewrite is disabled禁用 mod_rewrite 时的故障保护
【发布时间】:2014-08-08 14:30:54
【问题描述】:
我的框架完全依赖于在服务器上启用 mod_rewrite 来进行路由。在我的 .htaccess 文件中,我检查是否启用了 mod_rewrite.c 并在其中执行我的重写规则。但是,如果不打开 mod_rewrite,我的应用程序基本上会停止工作,因为我不想进行 http://www.domain.com/index.php/... url 设置以确保所有请求仍然通过 index.php 过滤。
如果 mod_rewrite 关闭,我是否有故障保险可以指示所有请求说一个内部 500 或可能是一些错误页面(如果我可以自定义它会很棒)?
【问题讨论】:
标签:
php
regex
apache
.htaccess
mod-rewrite
【解决方案1】:
您可以将所有mod_rewrite 规则保留在<IfModule mod_rewrite.c> 块中,将例外保留在<IfModule !mod_rewrite.c> 块中:
# execute when mod_rewrite is turned on
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
</IfModule>
# execute when mod_rewrite is turned off
<IfModule !mod_rewrite.c>
RedirectMatch ^(?!/error\.php).*$ /error.php
</IfModule>