取消apache对.htaccess文件的限制

问题
当访问一个站点的时候,报告“500 Internal Server Error”,查看/var/log/httpd/error_log,报告“/www/users/test.com/.htaccess: Options not allowed here”,或者报告“ErrorDocument not allowed here”等信息。

解决方案
这是由于客户在自己的网站的目录内放置了.htaccess文件。使用.htaccess文件,可以对网站目录的一些特性做子定义,如调整默认首页顺序、设置是否允许目录浏览、对网站目录做用户验证等功能进行定义。

而Prima系统所用的apache,出于虚拟主机的安全考虑,默认是禁止用户使用.htaccess文件对系统功能做自定义的。所以访问这个站点会出现500 Internal Server Error的错误,同时在/var/log/httpd/error_log中也会看到相应的报错。

比如报告“Options not allowed here”,则是用户在.htaccess文件中,使用了Options参数对自己的站点做了定义。所以我们需要在apache的配置中允许当前用户使用Options参数方可。如果报告“ErrorDocument not allowed here”,则是用户在.htaccess文件中使用了ErrorDocument参数。所以我们需要在apache的配置文件中,允许这个站点使用ErrorDocument参数方可。

解决方法有两种:

1) 取消.htaccess文件。

移动或者改名.htaccess文件。但是这样会造成一些特殊配置的丢失,可能影响站点的正常运行。

2) 登陆服务器,修改本站点的配置文件,允许用户使用.htaccess文件定义自己的站点。

vi /usr/prima/etc/httpd/virtual.conf

找到需要修改的站点,例如我们要修改test.com这个站点,可以找到如下一段配置:

<VirtualHost 192.168.0.100:80>
ServerName test.com
DocumentRoot /www/users/test.com
ServerAlias www.test.com
Action cgi-wrapper /cgiwrap/cgiwrap/user_oex0azf4
AddHandler cgi-wrapper .php .php4 .phtml
</VirtualHost>

上边是一个支持php站点的配置项。

加入要允许tesc.com这个站点使用Options参数,则在上边的配置中加入<Directory>和</Directory>一段,如下:

<VirtualHost 192.168.0.100:80>
ServerName test.com
DocumentRoot /www/users/test.com
ServerAlias www.test.com
Action cgi-wrapper /cgiwrap/cgiwrap/user_oex0azf4
AddHandler cgi-wrapper .php .php4 .phtml
<Directory /www/users/test.com>
Allowoverride Options
</Directory>
</VirtualHost>

请确认“Directory”参数后边的“/www/users/test.com”目录是当前要修改的站点的目录。

修改完成后保存文件并退出。重新启动apache服务:/etc/init.d/httpd restart ,即可。

如果要允许使用ErrorDocument,则把“Allowoverride Options”修改为“Allowoverride ErrorDocument”即可。

如果要设置同时允许多个,则可以写为“Allowoverride Options ErrorDocument”,中间用空格隔开。

注意:

1) Allowoverride参数必须被夹在<Directory>和</Directory>之间,否则无效。

2) 请不要对/www目录设置Allowoverride参数,一定要对单个站点目录做定义,否则会有安全隐患。

原文地址:https://www.cnblogs.com/sfqas/p/12181816.html

时间: 2024-11-09 01:39:19

取消apache对.htaccess文件的限制的相关文章

Apache中.htaccess文件的作用和配置

00x01 What's .htaccess      htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置.通过htaccess文件,可以帮我们实现:网页301重定向.自定义404错误页面.改变文件扩展名.允许/阻止特定的用户或者目录的访问.禁止目录列表.配置默认文档等功能. 一般来说,htaccess文件需要放在网站的根目录下才能控制整个站点,并且在Linux系统中,需要把其权限设置为644以提高安全性.国内很多主机提供商都通过一定技术手段禁用了该文件,但是国

Apache 中 .htaccess 文件设置技巧16则

.htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能..htaccess 配置文件坚持了Unix的一个文化——使用一个ASCII 的纯文本文件来配置你的网站的访问策略.这篇文章包括了16个非常有用的小技巧.另外,因为.htaccess 是一个相当强大的配置文件,所以,一个轻微的语法错误会造成你整个网站的故障,所以,在你修改或是替换原有的文件时,一定要备份

mac下为Apache 创建 .htaccess文件

在设置固定链接时会提示如下的问题: 若您的 .htaccess 文件可写,我们可以自动修改它.但似乎它不可写,因此我们在下方列出了您 .htaccess 文件中应该加入的URL 重写规则.点击下方的文本区域,按 CTRL+ a 来全选. 需要将下面的代码写入 .htaccess文件 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /wordpress/ RewriteRule ^index\.php$ - [L] RewriteCon

apache使用.htaccess文件中RewriteRule重定向后,URL中的加号无法解析

今天在使用.htaccess做伪静态的时候,发生一件怪事,URL里存在C++时会有问题,在处理C++这个词的时候,无论如何,$_GET都得不到++,只能得到C空格. 一开始我以为是没用urlencode处理,后来发现确确实实处理了,后台经过排查,确定是rewrite的问题,因为在单文件的环境是可以得到C++这个词的,当然,是经过了urlencode的. 原因:rewrite得不到c++这个词,是因为APACHE在得到参数后,自行做了urldecode处理,导致无法得到C++中的加号部分 决方案目

apache的.htaccess文件作用和相关配置

首先.htaccess什么? .htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令. 当我们使用apache部署一个网站代码准备部署到网上的时候,我们手中的apache的httpd.conf大家肯定都知道.这是apache的配置文件,然而我们大多数的网站都是基于云服务器来部署的,还有就是团队协作开发的时候,我们很难直接修改公共的httpd.conf,这时 .htaccess就是httpd.conf的衍生品,它起着和httpd.conf相同的作用. .htaccess的

apache使用.htaccess文件实现屏蔽wget下载网站内容

经发现,虽然wget遵循 robots.txt 规则,但是那个还是可以绕过去,现在56云小编把我自己使用的屏蔽方法分享给大家: 屏蔽下载任何文件 .htaccess SetEnvIfNoCase User-Agent "^wget" bad_bot <Limit GET POST> Order Allow,Deny Allow from all Deny from env=bad_bot </Limit> 屏蔽下载部分文件 .htaccess SetEnvIfN

PHP如何让apache支持.htaccess 解决Internal Server Error The server …错误

TP框架  打开 www.newtp.com/index.php/Home/Index/abc出现 如下错误: Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [email protected] and inform

apache开启.htaccess及.htaccess的使用方法

今天本地调试PHP程序,用到了.htaccess,而默认配置里面开启.htaccess,在网上找到了开启.htaccess的可行方法,供朋友们借鉴. 今天本地调试PHP程序,用到了.htaccess,而默认配置里面开启.htaccess,在网上找到了开启.htaccess的可行方法,供朋友们借 鉴.(开启的我他的方法不行,查找了一下AllowOverride None全部的都给换成AllowOverride All就了,原因不明,O(∩_∩)O~ 记得修改完httpd.conf以后一定要重启下a

如何让apache支持.htaccess 解决Internal Server Error The server …错误

如何让apache支持.htaccess 解决Internal Server Error The server …错误 文章来源:小灰博客| 时间:2013-12-25 12:17:08| 作者:Leo | 2 条评论 文章分类:IT技术分享.PHP.小技巧     标签: .htaccess.apache 今天朋友发来一套叫“PHP爱家房产网源码v5.01_destoon内核%4017558.net”的程序,让修改点东西,我在本地环境打开测试,导入数据库后打开发现报错,应该是服务器内部错误,提