20

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

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

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

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

6 回答 6

66

我拼凑了来自各种帖子的一些信息,所以我想我会提出一个答案。

  1. 正如 Paul 评论的那样,如果您运行的是 Amazon EC2 Linux,那么您可能运行的是 httpd 而不是 Apache。因此,该文件位于/etc/httpd/conf/httpd.conf
  2. 您必须以 root 用户身份更改文件。(通过 ssh 访问)这样做:(sudo vim /etc/httpd/conf/httpd.conf如何在 AMAZON EC2 中编辑 httpd.conf 文件
  3. DocumentRoot "/var/www/html"为我列出了两个地方。我不得不在这两个地方更改AllowOverride None后续AllowOverride All
  4. 重启阿帕奇。我重新启动了我的整个 ec2 实例(我将 apache 配置为自动启动),尽管重新启动 apache 应该可以工作。但我看到改变正在奏效。

我试图在 .htaccess 文件中进行相同的更改(从代码点火器应用程序的 url 中删除 index.php)。希望能帮助到你!

于 2014-09-03T00:40:38.790 回答
9

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

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

于 2013-10-16T16:09:02.573 回答
2

它是一个三步过程

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

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

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.重启apache

/etc/init.d/apache2 restart
于 2014-04-07T10:46:50.503 回答
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 文件就可以工作了

于 2019-05-23T07:44:02.017 回答
0

有三个步骤

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

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

    DocumentRoot /var/www
    选项 FollowSymLinks
    AllowOverride All
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all

  3. 通过命令重启 apache 服务器

    sudo 服务 apache2 重启

于 2017-11-20T17:26:25.990 回答
0

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

2 - 须藤纳米 000-default.conf

并粘贴此代码:

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

这适用于 AWS 实例。

于 2019-10-16T20:23:10.967 回答