【问题标题】:How to enable .htaccess in amazon ec2 running ubuntu如何在运行 ubuntu 的亚马逊 ec2 中启用 .htaccess
【发布时间】:2015-06-18 13:16:03
【问题描述】:

我有一个在 ec2 中运行 ubuntu 的实例。我有这个 .htaccess 文件:-

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

此文件位于var/www/html 文件夹内。我的目标是实现将amazon-public-dns.com/index.php 加载为amazon-public-dns.com/index

现在,我已经尝试了这些步骤:-
1) 在/etc/apache2/mods-enabled 中创建rewrite.conf,并在文件中放置LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so 行。 (Refer this answer)
2) 运行命令apache2 enable module rewrite。另外,在文件/etc/apache2/sites-available/000-default.conf 中最后写下这个:-

 <Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        # changed from None to FileInfo
        AllowOverride All
        Order allow,deny
        allow from all
 </Directory>

注意this answer 告诉编辑default。但是,由于在我的情况下该文件不存在,因此我编辑了 000-default.conf 文件。
我按照告知重新启动了 apache。但是链接 amazon-public-dns.com/index 给了我一个 404 :( 请帮助我。

编辑:我在 htaccess 文件中放了一些随机垃圾。但是 index.php 没有给出任何500 内部服务器错误,这意味着 htaccess 文件被忽略。现在在

https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles

,他们说要启用 htaccess 编辑这个文件 - /etc/apache2/sites-available/default但是没有这样的文件

【问题讨论】:

标签: php apache .htaccess mod-rewrite amazon-ec2


【解决方案1】:

默认的 conf 文件 /etc/apache2/sites-available/000-default.conf 仅在启用站点的文件夹中有符号链接时才有效。

您已完成所有正确的步骤。它可能是站点可用文件夹的系统链接问题。您可以创建符号链接或将 000-default.conf 与 AllowOverride None 更新为 AllowOverride All 文件 /etc/apache2/sites-enabled/000-default.conf

【讨论】:

    【解决方案2】:

    以下命令对我很有用!

    sudo a2enmod rewrite
    sudo service apache2 restart
    

    检查加载的模块

    sudo apache2ctl -M
    

    【讨论】:

      【解决方案3】:

      今天我在一个 ubuntu EC2 实例上遇到了同样的问题。

      这对我有用:

      将您的.htaccess 配置放在&lt;IfModule ..&gt; 指令中:

      <IfModule mod_rewrite.c>
        RewriteEngine on
        # your config here
      </IfModule>
      

      不确定/var/www/html 是否真的被服务器考虑在内。 尝试改变这个:

      <Directory /var/www/html>
          # your current implementation
          AllowOverride All
      </Directory>
      

      对于这个:

      <Directory /var/www>
          # your current implementation
          AllowOverride All
      </Directory>
      

      这个指令应该已经在你的/etc/apache2/apache2.conf 文件中了。

      如果这不起作用,请尝试注释掉您的配置,尤其是具有 allow,denyallow from all 的部分

      <Directory /var/www>
          # your current implementation
          AllowOverride All
          # Order allow,deny # try to comment this one out 
          # allow from all # also this one
      </Directory>
      

      最后但同样重要的是,检查重写 a2enmod 模块是否已按照 @kamal-kumar 的建议加载,不要忘记重新启动 apache。

      这对我有用,希望这对其他人有帮助:)

      【讨论】:

        猜你喜欢
        • 2015-10-22
        • 2013-09-22
        • 2015-01-13
        • 2016-08-11
        • 2023-03-26
        • 1970-01-01
        • 2013-07-05
        • 2015-11-23
        • 2014-02-22
        相关资源
        最近更新 更多