.htaccess:此处不允许使用RewriteEngine

时间:2011-08-09 11:35:47

标签: .htaccess mod-rewrite apache httpd.conf

我将.htaccess上传到服务器并收到错误500(内部服务器错误)

在错误日志中,我遇到以下错误:

... /。htaccess:此处不允许使用RewriteEngine

mod_rewrite.so已启用。

那么,我需要更改

吗?
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
/etc/httpd/conf/httpd.conf 文件中的

或者它可能是别的吗? .htaccess文件应该没问题,因为它在我的localhost上运行得很好。我只是不想搞砸任何东西。

这是我的.htaccess文件的一部分:

Options All -Indexes

Options +FollowSymLinks

RewriteEngine On

8 个答案:

答案 0 :(得分:57)

.htaccess工作的最低配置:

AllowOverride FileInfo Options

允许所有配置也可以使用:

AllowOverride All

答案 1 :(得分:9)

假设您的DOCUMENT_ROOT为/home/foo/web,然后在httpd.conf文件中包含此配置:

<Directory "/home/foo/web">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

这应该会处理您遇到的RewriteEngine is not allowed错误。

答案 2 :(得分:4)

只是一个想法,这发生在我身上,而且我已经失去了很多时间来解决它。

如果您有d:/web/my-sites/some-site/

这样的目录

然后将.htaccess放在d:/web/my-sites/some-site/.htaccess上(原来应该是这样)。

如果在此目录之前有任何.htaccess个文件,Apache会读取该文件,并阻止整个路径的执行,从而产生内部服务器错误。

I.E。:您有d:/web/my-sites/.htaccess

答案 3 :(得分:3)

在httpd版本2.4(2.4.3和2.4.4)中,查看/etc/httpd/conf.d/wordpress.conf 有一个条目: ....

变化: “AllowOverride选项” 至 “AllowOverride All”

除了更改httpd.conf之外,wordpress.conf中的

也是如此。在更改生效之前重新启动http服务器。

答案 4 :(得分:0)

尝试在/etc/apache2/users/username.conf下将Mac上的username.conf文件更改为

<Directory "/Users/akyoo/Sites/">
   AllowOverride All
   Options Indexes MultiViews FollowSymLinks
   Require all granted
</Directory>

我的.htaccess文件看起来像这样

#Allow from all
Options +FollowSymLinks
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

这对我来说很好。  Solution for Ubuntu users

答案 5 :(得分:0)

此外,只需确保您正在编辑正确的配置文件。我在/etc/apache2/users/USERNAME.conf下创建了一个文件,但正在编辑/etc/apache2/httpd.conf。

删除USERNAME.conf文件。

答案 6 :(得分:0)

在检查/var/log/apache2/error.log的日志后,我从Google Cloud实例中收到了此类错误

  

.htaccess:此处不允许使用RewriteEngine

要摆脱上述错误和500 Internal Server Error,请按照以下简单步骤进行操作

sudo nano /etc/apache2/apache2.conf

然后添加这些代码行

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

进行更改后,请确保重新启动服务器:

sudo service apache2 restart

这对于我摆脱了托管在Google Cloud实例上的500个内部服务器错误

答案 7 :(得分:-4)

你可以在你的.htaccess文件中使用这样的东西:

RewriteEngine on
RewriteCond $1 !^(index\.php|html|test)
RewriteRule ^(.*)$ /index.php/$1 [L]

这段代码只是意味着,任何不指向index.php或html或test的东西都应该指向index.php!

希望这有用!