403重定向不起作用

Posted

技术标签:

【中文标题】403重定向不起作用【英文标题】:403 redirect doesn't work 【发布时间】:2011-08-27 06:51:49 【问题描述】:

如何强制 apache 重定向到 403 错误? 我试过了:

RewriteRule ^forbid/(.*)$ / [R=403,L] 

这导致整个站点出现 500 服务器错误

RewriteRule ^forbid/(.*)$ - [R=403,L] 

RewriteRule ^forbid/(.*)$ [R=403,L] 

这些根本行不通 我有以下 .htaccess 文件:

RewriteEngine on
RewriteRule ^(config|backup)(.*)$ - [F] [NC]

RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^admin/(.*)$ /admin/index.php?%QUERY_STRING [L,QSA] 

RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !util
RewriteRule ^(.*)$ index.php?%QUERY_STRING [L,QSA]

请帮帮我!

【问题讨论】:

【参考方案1】:

试试这个:

RewriteRule ^forbid/(.*)$ - [F]

来源:http://httpd.apache.org/docs/current/rewrite/flags.html#flag_f

【讨论】:

是的。重定向只存在于 3xx 代码范围内,403 Forbidden 是客户端错误,而不是重定向。【参考方案2】:

除非您定义了我们在您的规则中看不到的RewriteBase,否则我认为您不希望在“禁止”您的表达式之前使用^,因为它在技术上会以“/”开头

RewriteRule ^forbid/(.*)$ - [R=403,L]
# Instead try
RewriteRule ^/forbid/(.*)$ - [R=403,L]
# Or
RewriteRule forbid/(.*)$ - [R=403,L]

【讨论】:

实际上,我有 RewriteBase,但我忘了复制它。但无论如何这没有任何意义。

以上是关于403重定向不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 .htaccess 重定向 403 错误

为啥这个重定向不起作用?

geoip 将国家/地区重定向到 403

为啥页面重定向在 php 中不起作用

为啥这个 .htaccess 重定向不起作用?

PHP重定向不起作用