Linux Apache重写引擎打开导致403错误

Linux Apache重写引擎打开导致403错误,linux,apache,.htaccess,mod-rewrite,centos6,Linux,Apache,.htaccess,Mod Rewrite,Centos6,我有一个运行Centos 6.6和Apaches 2.2.x的Linux机器 由于未知原因,打开重写引擎会导致403错误(无论是否添加重写规则,都会发生这种情况) 我花了几个小时研究这个问题,并根据在许多地方找到的建议对配置进行了更改,但仍然一无所获 当前在my.htaccess中,我有以下内容: <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On </IfModule> Doc

我有一个运行Centos 6.6和Apaches 2.2.x的Linux机器 由于未知原因,打开重写引擎会导致403错误(无论是否添加重写规则,都会发生这种情况)

我花了几个小时研究这个问题,并根据在许多地方找到的建议对配置进行了更改,但仍然一无所获

当前在my.htaccess中,我有以下内容:

<IfModule mod_rewrite.c>  
Options +FollowSymLinks  
RewriteEngine On  
</IfModule>
DocumentRoot /var/www/html/example.uk  
<Directory /var/www/html/example.uk>  
Options Indexes FollowSymLinks MultiViews  
AllowOverride All
Order allow,deny
allow from all
</Directory>
ServerName example.uk  
ServerAlias www.example.uk

选项+FollowSymLinks
重新启动发动机
在虚拟主机的指令中,我有:

<IfModule mod_rewrite.c>  
Options +FollowSymLinks  
RewriteEngine On  
</IfModule>
DocumentRoot /var/www/html/example.uk  
<Directory /var/www/html/example.uk>  
Options Indexes FollowSymLinks MultiViews  
AllowOverride All
Order allow,deny
allow from all
</Directory>
ServerName example.uk  
ServerAlias www.example.uk
DocumentRoot/var/www/html/example.uk
选项索引跟随符号链接多视图
允许超越所有
命令允许,拒绝
通融
ServerName example.uk
ServerAlias www.example.uk
(这似乎在Debian机器中起作用,但在我的Centos机器上不起作用。)

在我的httpd.conf中,我已经更改了

不允许超限

允许超越所有

我的httpd.conf还包含
LoadModule rewrite\u module modules/mod\u rewrite.so

错误日志显示:

SymLinks或SymLinksFownerMatch后面的选项处于关闭状态,这意味着禁止重写规则指令:/var/www/html/example.uk

现在,我已经在指令中添加了symlinksFownerMatch,但它没有解决问题


我跟着走了,一切似乎都正常进行。

您应该从htaccess中删除这一行

Options +FollowSymLinks

您已经在apache vhost文件中有了它。另外,如果您要打开mod_rewrite或者没有必要打开它,那么您应该添加一条规则

当Apache没有对的执行权限时,就会发生这种情况

/var
/var/www
/var/www/html
/var/www/html/example.uk  
运行:


自apache版本>=2.4指令

Order allow,deny
allow from all
导致一个全局403,如果您检查apache的日志,可以确保这一点:

[Tue May 05 11:54:32.471679 2015][authz_core:error][pid 9497][client 127.0.0.1:35908]AH01630:客户端被服务器配置拒绝:/path/to/web/

注释指令
命令
和添加
要求所有授予的
,如以下所示:

 Require all granted
 #Order allow,deny
 #allow from all
希望这有帮助

编辑:

新模块
mod_authz_host


对于可用的限制列表(ip、主机等)

Apache 2.4的另一种可能性是由
选项-FollowSymlinks
引起的,它还将抛出403错误并生成以下日志:

AH00670:以下选项SYMLINKS和SymLinksIfOwnerMatch均已关闭, 因此,RewriteRule指令也被禁止,因为它与 规避目录限制的能力

原来的帖子不是这样,但如果出现这种情况,您需要使用以下行重新启用FollowSymLinks:


Options+FollowSymLinks

您得到的403是哪一页?你在那个位置有索引文件吗?@PanamaJack根目录。这里有一个index.php,如果我在检查您的apache日志文件时注释RewriteEngine,并查看它说明了您为什么会遇到什么错误,它会显示得很好403@PanamaJack我已将其添加到问题中您有权访问日志吗?如果是这样,请检查它们,并将单个请求的日志放在此处!您添加了重写规则吗?添加了
RewriteCond%{SERVER\u PORT}80 rewriterule^(.*)$https://example.uk/$1[R,L]
在您将其添加到vhost文件时仍然出现403错误。是否重新启动了apache?是的,我重新启动了apacheTry,将vhost中的
索引更改为
-索引并重新启动。我尝试了此操作并重新启动了apache。仍然不起作用。不,仍然有问题。这实际上帮助了我。Apache是所有者,但没有执行权。chmod to/var/www/html755做了一些小动作,但这导致了一个500错误。我想我将不得不忘记使用.htaccess而改用PHP。谢谢你的贡献。为了增加清晰度,并将您的帖子作为一个完整的答案,我建议您添加重新启用
FollowSymLinks
所需的确切代码。这样,不太熟悉这项技术的用户就可以应用您的建议,而无需首先进行额外的研究来了解如何应用。完全自给自足的答案更有用,而且更有可能获得更高的投票率。只需在文章末尾添加一行代码就可以了。如果这是人们可能想了解更多的内容,那么添加源链接(如果有)总是受欢迎的。