htaccess在localhost中工作,但在EC2实例中不起作用

时间:2013-10-16 16:07:04

标签: apache .htaccess mod-rewrite amazon-web-services amazon-ec2

我的htaccess文件在localhost上运行,但在将其部署到EC2实例时不起作用。

我正在使用Macbook并且在查找器中我看不到htaccess文件,我想也许它没有被复制到EC2实例但我不认为这是问题,因为当我复制项目时我可以看到我的编辑器中的htaccess文件。

在EC2 linux实例中是否有一些启用mod重写的东西?如果有,我没有这样做,或者它默认启用mod重写?

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

6 个答案:

答案 0 :(得分:51)

我拼凑了各种帖子中的一些信息,所以我想我会给出答案。

  1. 正如Paul所评论的,如果您正在运行Amazon EC2 Linux,那么您可能正在运行httpd而不是Apache。因此该文件位于/etc/httpd/conf/httpd.conf
  2. 您必须以root用户身份更改文件。 (来自ssh访问)执行此操作:sudo vim /etc/httpd/conf/httpd.confHow to edit httpd.conf file in AMAZON EC2
  3. DocumentRoot "/var/www/html"为我列在两个地方。我必须在这两个地方将后续的AllowOverride None更改为AllowOverride All
  4. 重启apache。我重新启动了我的整个ec2实例(我已经配置apache自动启动)虽然只是重启apache应该工作。但我看到改变正在发挥作用。
  5. 我试图在.htaccess文件中进行相同的更改(从代码点火器应用程序中的url中删除index.php)。希望它有所帮助!

答案 1 :(得分:8)

默认情况下,EC2没有启用.htaccess,您必须编辑httpd.config以允许它。

在/ etc / apache / sites-available / default中将AllowOverRide = None更改为AllowOverRide = All。

答案 2 :(得分:2)

这是一个三步过程

  1. 配置apache mod_rewrite,在终端中运行。 sudo a2enmod重写

  2. 将以下代码添加到/ etc / apache2 / sites-available / default

  3. DocumentRoot /var/www
    <Directory />
    Options FollowSymLinks
    AllowOverride All
    </Directory>
    <Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    </Directory>
    

    3.Restart apache

    /etc/init.d/apache2 restart
    

答案 3 :(得分:0)

有三个步骤

  1. 配置apache mod_rewrite,在终端中运行。 sudo a2enmod重写

  2. 关闭VirtualHost标签/etc/apache2/sites-available/000-default.conf后,在此文件中添加此代码

    DocumentRoot / var / www
    选项FollowSymLinks
    AllowOverride All
    选项索引FollowSymLinks MultiViews
    AllowOverride全部
    订单允许,否认
    允许所有人

  3. 按命令重启apache服务器

    sudo service apache2 restart

答案 4 :(得分:0)

使用apache2服务器时

转到以下目录。

cd / etc / apache2 / sites-available

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

000-default.conf

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

打开此文件进行编辑。

sudo nano 000-default.conf

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

Options FollowSymLinks AllowOverride All Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all

保存文件并重新启动apache。

sudo服务apache2重新启动

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

答案 5 :(得分:0)

在Linux环境中 1-cd / etc / apache2 / sites-available

2-sudo nano 000-default.conf

并粘贴以下代码:

<Directory "/var/www/html">
    Order allow,deny
    Allow from all
    Options None
    AllowOverride All
</Directory>

这适用于AWS实例。