.htaccess无法在amazon ec2 ubuntu实例中工作

时间:2013-09-18 06:46:01

标签: php .htaccess mod-rewrite amazon-ec2 ec2-api-tools

我在Linux Ubuntu上运行amazon的ec2服务的服务器( Ubuntu Server 13.04 64位)我已经安装了apache,php和mysql。我在我的文档根目录中添加了一个.htaccess文件(即/ var / www /)。

以下是.htaccess文件中的代码,如下所示:

RewriteEngine on 
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

如果我从url中删除.php,如“index1”而不是“index1.php”,则会返回404浏览器错误。它在我以前的服务器上正常工作。

我在服务器中启用了.htaccess。我使用命令“sudo vim / etc / apache2 / sites-available / default”并将“AllowOverride None”更改为“AllowOverride All”。

我还通过在htaccess文件中传递无效值来检查.htaccess工作,并在浏览器中返回“内部服务器错误 - 500”。

以下是我的服务器信息的链接:http://54.200.58.45/mytest.php

在这方面的任何帮助将受到高度赞赏。

5 个答案:

答案 0 :(得分:8)

这是我在Ubuntu 13.10的新EC2实例上使用的wat:

  • a2enmod rewrite
  • vim /etc/apache2/sites-enabled/000-default.conf
  • 将以下内容添加到VirtualHost
<Directory "/var/www">
  AllowOverride All
</Directory>
  • service apache2 restart

答案 1 :(得分:6)

这是因为出于安全原因,默认情况下不会启用重写模块。

rewrite.conf中创建一个名为/etc/apache2/mods-enabled的新文件 在文件中放置此行LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

现在重新加载服务器sudo service apache2 restart

这对我有用,希望对你而言,但我不建议这对于生产服务器。这是常规Ubuntu用户不是实时服务器的信息。

答案 2 :(得分:0)

您需要先检查是否启用了mod重写模块。

答案 3 :(得分:0)

尝试了一切,没有任何效果......

2小时后..终于修好了。

首先要排除的事情。

  1. 确保您已在 /etc/apache2/apache2.conf 和/ etc / apache2 / sites-enabled / 000-default.conf中进行了更改< / strong>每个人都在谈论......(AllowOverride All和AccessFileName .htaccess一定不能被注释掉)

  2. 确保Directory / var / www / html指向正确的文件夹。有时它有/ html,有时它只是/ var / www(但它不能以/我认为结束,但这可能无关紧要。)

    1. 最后,这对我有用。重启整个服务器,而不仅仅是Apache。我发现这是我的问题,在我尝试停止apache2(s ervice apache2 stop )之后我仍然可以访问我的网站。所以我做了一次完全重启,然后我在过去的2个小时里做了所有的改变,终于开始了。
  3. 成功:)

答案 4 :(得分:0)

问题是默认情况下在Ubuntu上安装的apache中没有启用.htaccess,因此首先您必须在配置文件中手动启用它并重新启动apache。

这是步骤。

1)使用SSH登录到您的EC2实例。

ssh -i“ Yourkey.pem” ubuntu @ yourpublicip

2)启用模式重写,以防万一它没有启用。

sudo a2enmod重写

3)转到以下目录。

cd / etc / apache2 / sites-available

如果在此处使用LS命令,则会看到以下文件。

000-default.conf

这是具有默认apache配置的文件,该文件将应用于 / var / www / html 文件夹中的网站。

4)打开此文件进行编辑。

sudo nano 000-default.conf

5)在DocumentRoot / var / www / html行之后添加以下行。

     选项FollowSymLinks      允许全部覆盖      选项索引FollowSymLinks多视图      允许全部覆盖      订单允许,拒绝      允许所有人

6)保存文件并重新启动apache。

sudo服务apache2重新启动

就是这样,现在您的.htaccess文件可以使用