Amazon EC2 .htaccess 和 500 错误

Amazon EC2 .htaccess 和 500 错误

我有一个,Amazon EC2 (amzn-ami-pv-2013.09.0.x86_64-ebs (ami-149f7863))我在其上安装了ApachePHPMySQL

在我尝试激活之前,一切正常.htaccess

我更改AllOverride Allhttp.conf重新启动 Apache 服务。

当我添加文件时,即使 htaccess 无效,.htaccess我也会收到。500 Internal Server Error

mod_rewrite.so 模块已加载

如果我删除 htaccess,一切就正常了。

我做错了什么?

--已编辑--

这是 .htaccess 内容

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteCond %{HTTP_HOST} ^mywebsite.com
RewriteRule (.*) http://www.mywebsite.com/$1 [R=301,L]

但即使我将 htaccess 文件保留为空白,它也会返回 500 错误。

虚拟主机定义如下:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/mywebsite.com
    ServerName mywebsite.com
</VirtualHost>

--编辑-2-

很抱歉,但我只通过从命令行创建 .htaccess 文件就解决了这个问题。现在一切正常。非常感谢你的帮助。

--编辑结束--

谢谢

答案1

您的 Apache 错误日志中写了什么?您的网站在没有.htaccess安装任何插件的情况下也能加载,对吗?

根据我的经验,当出现 500 错误时,.htaccess可能只是因为.htaccess文件本身在文件系统上被弄乱了。我建议删除实际文件并创建一个新的.htaccess。如果仍然显示 500 错误,则逐行.htaccess注释掉每一行并重新加载页面。很有可能至少有一行有问题,这会显示出来。

编辑:自您添加内容以来,我仔细查看了您的.htaccess内容,并认为我发现了问题所在。将其更改为如下内容:

Options +FollowSymlinks

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.mywebsite.com/$1 [L,R=301]

看起来你的 RewriteCond 格式有问题。另外,我将其调整为以人类形式读取的方式:

如果此请求不是www.mywebsite.com 然后重定向至 www.mywebsite.com

这样你就可以清楚地抓住一切不是 www.mywebsite.com并将它们发送到正确的域。

另外,在您的 Apache 配置中,我建议使用ServerAlias来表示www.mywebsite.com。看起来您正在使用NameVirtualHost,因此将主服务器名称www.mywebsite.com与别名一起使用mywebsite.com是最有意义的。

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.mywebsite.com
    ServerAlias mywebsite.com
    DocumentRoot /var/www/html/mywebsite.com
</VirtualHost>

答案2

很难回答你的问题;正如你所说,文件.htaccess本身不应该导致你的服务器返回错误。这意味着它可能是你在文件中写入的内容,或者可能是与 apache 设置的组合。

我建议你分享导致 500 错误的 tatVirtualHost的定义和内容。.htaccess

我还建议您检查 apache 日志,如有必要调整配置以获得足够详细的日志来了解您的问题。

乍一看,我猜这是一个格式错误的ReWrite规则,因为这很容易做到。

相关内容