11

我的问题是我.htaccess在本地服务器上的文件没有被读取。文件中的设置VirtualHost似乎总是优先。

我尝试了以下方法:

  • 启用mod_rewrite
  • 将 更改AllowOverrideAll但这会导致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文件,这应该很重要吗?

4

2 回答 2

6

查看我的 apache 后,error.log我意识到我只需要启用 Apacheactions模块:

sudo a2enmod 动作

不再出现 500 个内部服务器错误!

希望这可以帮助某人:)

于 2013-01-23T13:47:32.900 回答
1

你错过了RewriteBase / 指令

RewriteEngine在指令 之后添加它:

RewriteEngine On
RewriteBase /
于 2013-01-19T23:10:54.120 回答