.htaccess 在 Amazon EC2 Ubuntu 实例中不起作用


.htaccess not working in amazon ec2 ubuntu instance

我有一个来自亚马逊 ec2 服务的服务器运行在 Linux Ubuntu 上(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

在这方面的任何帮助将不胜感激。

这是在

带有 Ubuntu 2 的全新 EC13.10 实例上为我工作的:

  • A2enmod 重写
  • vim/etc/apache2/sites-enabled/000-default.conf
  • 将以下内容添加到虚拟主机
<目录>  允许覆盖全部
  • 服务 Apache 2 重启

发生这种情况是因为出于安全原因,默认情况下未启用重写模块。

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

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

这对我有用,希望对您有用,但我不建议生产服务器这样做。这是针对普通 Ubuntu 用户的信息,而不是针对实时服务器的信息。

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

以下是步骤。

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

ssh -i "Yourkey.pem" ubuntu@yourpublicip

2)启用模式重写,以防万一,如果未启用。

sudo a2enmod rewrite

3) 转到以下目录。

CD/etc/apache2/sites-available

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

000-默认.conf

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

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

sudo nano 000-default.conf

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

选项跟随符号链接 允许覆盖全部选项索引跟随符号链接多视图 允许覆盖全部 订单允许,拒绝 允许来自所有人

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

sudo service apache2 restart

就是这样,现在您的 .htaccess 文件可以工作了

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

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

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

所以首先要排除的事情。

    确保您已经在/etc/apache2/
  1. apache2.conf 和/etc/apache2/sites-enabled/000-default.conf 中进行了每个人都在谈论的更改......(AllowOverride All 和 AccessFileName .htaccess 不得注释掉)

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

    1. 最后,这就是对我有用的东西。重新启动整个服务器,而不仅仅是 Apache 。在我尝试停止apache2(service apache2 stop)并且我仍然能够访问我的网站之后,我发现这是我的问题。所以我做了一个完全重启,然后我在过去 2 小时内所做的所有更改终于开始了。

成功:)