我将.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
答案 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!
希望这有用!