【问题标题】:.htacess - rewrite rule - error client denied by server configuration.htaccess - rewriterule - 错误客户端被服务器配置拒绝
【发布时间】:2015-12-13 19:00:44
【问题描述】:

我想寻求帮助。

我有这个 .htaccess 文件 .htaccess 文件用于在 example.com 上重定向,当用户进入另一个域(也被定向到此主机)时。然后是“漂亮的 URL 地址”的规则:

example.com/advert/xx 指向 example.com/advert.php?id=xx

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^advert/([^/]+)/?$ advert.php?id=$1 [L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^adverts/([^/]+)/?$ adverts.php?kat=$1 [L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^adverts/([^/]+)/([^/]+)/?$ adverts.php?kat=$1&podkat=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

ErrorDocument 404 /404.php

问题是,它会导致如下错误:

客户端被服务器配置拒绝: /data/web/virtuals/56654/virtual/www/advert

我认为服务器正在调查不存在的 FOLDER advert(这只是漂亮的 URL 规则)。

主机支持告诉我我的 .htaccess 文件有误。 有人可以告诉我我哪里错了吗?

感谢大家的帮助。

【问题讨论】:

  • 哪个网址导致错误?
  • “example.com/advert/xx”或“example.com/adverts/xx”或“example.com/adverts/xx/yy”

标签: apache .htaccess mod-rewrite server


【解决方案1】:

您的第一个RewriteCond** 开头。删除这些,或者如果您想注释掉某些行,请以# 开头。与您在行尾的第一个 RewriteRule 相同。

【讨论】:

  • 不,那只是在这里,我想让它变得强壮/大胆,但在代码中它不起作用。
  • 你使用 PHP 作为 FCGI 吗? %{SCRIPT_FILENAME} 定义了吗?
  • 我不确定,如果 %{SCRIPT_FILENAME} 已定义,我将如何识别?
  • 尝试用REQUEST_FILENAME替换SCRIPT_FILENAME
【解决方案2】:

我遇到了同样的问题,让 RewriteRule 在路径中包含 DocumentRoot 为我解决了这个问题。

这被拒绝了:

RewriteRule ^/webapp/([\w]+) /script.cgi?id=$1

这行得通:

RewriteRule ^/webapp/([\w]+) /var/www/html/script.cgi?id=$1

我的 httpd.conf 中确实有目录权限。如果您不使用目录权限,这可能不是问题。

【讨论】:

    猜你喜欢
    • 2019-12-10
    • 2020-04-25
    • 2014-05-30
    • 1970-01-01
    • 2013-08-05
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    相关资源
    最近更新 更多