.htaccess 如何在mod_rewrite中添加文件异常

ippsafx7  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(128)

我试图从下面的重写中删除我的execute.php,代码不是我的,我不知道任何Apache,我怎么能做到这一点?

# BASE REWRITE
<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_URI} !-f
    RewriteCond %{REQUEST_URI} !-d
    RewriteCond %{REQUEST_URI} !-l
    RewriteRule ^(.*)$ index.php?data=$1 [QSA,L]
    # (Line to ignore execute.php)
</IfModule>

字符串

brc7rcf0

brc7rcf01#

将条件添加到现有规则比添加特定的例外规则更容易:

RewriteEngine on
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI} !-l
RewriteCond %{REQUEST_URI} !/execute\.php$
RewriteRule ^/?(.*)/?$ index.php?data=$1 [QSA,END]

字符串
如果收到内部服务器错误(http状态500)使用上面的规则,那么你很可能操作的是一个非常旧版本的apache http服务器。在这种情况下,你会在你的http服务器错误日志文件中看到一个明确的不支持的[END]标志的提示。你可以尝试升级或使用旧的[L]标志,它可能在这种情况下工作相同,但这取决于您的设置。
在http服务器主机配置中或分布式配置文件中,此实现同样有效。(“.htaccess”文件)。显然,重写模块需要在http服务器中加载,并在http主机中启用。如果使用分布式配置文件,则需要注意,在主机配置中完全启用了它的解释,并且它位于主机的DOCUMENT_ROOT文件夹中。
还有一句总论:您应该始终首选将此类规则放置在http服务器主机配置中,而不是使用分布式配置文件(“.htaccess”)。这些分布式配置文件会增加复杂性,通常会导致意外行为,难以调试,并且会降低http服务器的运行速度。在您无法访问真正的http服务器主机配置的情况下,这些文件仅作为最后一个选项提供(念:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是一个安全噩梦)。

相关问题