【问题标题】:.htaccess not working in amazon ec2 ubuntu instance.htaccess 在亚马逊 ec2 ubuntu 实例中不起作用
【发布时间】:2013-09-22 19:37:42
【问题描述】:

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

.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

我们将非常感谢您在这方面的任何帮助。

【问题讨论】:

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


    【解决方案1】:

    这对我来说是在 Ubuntu 13.10 的新 EC2 实例上工作的:

    • a2enmod 重写
    • vim /etc/apache2/sites-enabled/000-default.conf
    • 将以下内容添加到 VirtualHost
    允许覆盖所有 目录>
    • 服务 apache2 重启

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 对于非“常规 Ubuntu 用户”的几个问题 ....实时服务器的方法是什么?以上有哪些风险?谢谢!
      • 不适合我.. 腻子返回 module_rewrite 已加载跳过
      【解决方案3】:

      问题是默认情况下安装在 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

      这是在 /var/www/html 文件夹中应用到您网站的默认 apache 配置文件。

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

      sudo nano 000-default.conf

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

      选项 FollowSymLinks 允许覆盖所有 选项索引 FollowSymLinks MultiViews 允许覆盖所有 命令允许,拒绝 允许所有人

      6) 保存文件并重启 apache。

      sudo service apache2 重启

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 我已经使用“sudo a2enmod rewrite”来启用mod rewrite,但它显示“Module rewrite already enabled”。
        【解决方案5】:

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

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

        所以首先要排除的事情。

        1. 确保您已在 /etc/apache2/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 小时内所做的所有更改终于生效了。

        成功:)

        【讨论】:

          猜你喜欢
          • 2010-12-28
          • 2015-10-22
          • 1970-01-01
          • 2023-03-10
          • 2014-10-08
          • 2014-03-30
          • 2020-05-12
          • 2011-07-17
          • 1970-01-01
          相关资源
          最近更新 更多