7

我有一台运行在 Linux Ubuntu(Ubuntu Server 13.04 64 位)上的亚马逊 ec2 服务的服务器,并且我已经安装了 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

在这方面的任何帮助将不胜感激。

4

5 回答 5

12

这是在 Ubuntu 13.10 的新 EC2 实例上为我工作的方法:

  • a2enmod 重写
  • vim /etc/apache2/sites-enabled/000-default.conf
  • 将以下内容添加到 VirtualHost
<目录“/var/www”>
  允许覆盖所有
</目录>
  • 服务 apache2 重启
于 2014-01-26T10:45:49.550 回答
6

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

rewrite.conf在文件中创建一个新文件,/etc/apache2/mods-enabled 将这一行LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

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

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

于 2013-10-24T14:00:19.797 回答
2

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

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

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

sudo nano 000-default.conf

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

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

6)保存文件并重新启动apache。

sudo 服务 apache2 重启

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

于 2019-05-23T09:42:01.397 回答
0

您需要先检查是否启用了 mod rewrite 模块。

于 2013-09-18T08:28:53.650 回答
0

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

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 (s ervice apache2 stop ) 之后我仍然能够访问我的网站。所以我进行了完全重启,然后我在过去 2 小时内所做的所有更改,终于开始了。

成功 :)

于 2015-11-07T02:39:25.313 回答