我的问题是我的本地服务器上的.htaccess
文件没有被读取。 VirtualHost
文件中的设置似乎始终优先。
我尝试了以下内容:
mod_rewrite
AllowOverride
更改为All
,但这会导致HTTP Error 500 Internal server error
。我已经尝试了各种选项,但它总是导致500错误。我在Ubuntu上使用VirtualHost文件,如下所示:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /web/website
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /web/website>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
在.htaccess
下的/web/website
文件中,我有以下规则(未阅读):
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit
RewriteRule ^(.*)$ ogtags.php?$1 [L,QSA]
ErrorDocument 404 /404
ErrorDocument 401 /401
我尝试过的一件事就是将这些规则直接附加到VirtualHost文件中,但我希望我的.htaccess
文件能够正常工作!这是一个如此大的问题吗? :(
修改:所以我查看了我的apache error.log
,并说Invalid command 'Action', perhaps misspelled or defined by a module not included in the server configuration
引用了我的.htaccess
文件。似乎没有一个名为Action的模块,我可以启用它。有什么想法吗?
编辑2:我注意到我的httpd.conf
文件为空。这是否重要,因为我使用的是VirtualHost
个文件?
答案 0 :(得分:6)
在查看我的apache error.log
后,我意识到我必须启用Apache actions
模块:
sudo a2enmod行动
不再有500个内部服务器错误!
希望这可以帮助有人下线:)
答案 1 :(得分:1)
您错过了RewriteBase /
指令
在RewriteEngine
指令后添加:
RewriteEngine On
RewriteBase /