如何在运行ubuntu的amazon ec2中启用.htaccess

时间:2015-04-13 09:17:00

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

我有一个在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)  在rewrite.conf/etc/apache2/mods-enabled行的文件中创建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但没有这样的文件

3 个答案:

答案 0 :(得分:1)

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

您已经做了所有正确的步骤。它可能是站点可用文件夹的sysmlink问题。你可以创建一个符号链接,也可以在文件/etc/apache2/sites-enabled/000-default.conf中用AllowOverride None更新000-default.conf到AllowOverride All

答案 1 :(得分:1)

以下命令对我很有用!

sudo a2enmod rewrite
sudo service apache2 restart

检查加载的模块

sudo apache2ctl -M

答案 2 :(得分:0)

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

这对我有用:

.htaccess配置放在<IfModule ..>指令中:

<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。

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