【问题标题】:403 redirect doesn't work403重定向不起作用
【发布时间】: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]

请帮帮我!

【问题讨论】:

    标签: .htaccess http-status-code-403


    【解决方案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,但我忘了复制它。但无论如何这没有任何意义。
    猜你喜欢
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2014-08-30
    • 2012-05-29
    相关资源
    最近更新 更多