我在Linux Ubuntu上运行amazon的ec2服务的服务器( Ubuntu Server 13.04 64位)我已经安装了apache,php和mysql。我在我的文档根目录中添加了一个.htaccess文件(即/ var / www /)。
以下是.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
在这方面的任何帮助将受到高度赞赏。
答案 0 :(得分:8)
这是我在Ubuntu 13.10的新EC2实例上使用的wat:
<Directory "/var/www"> AllowOverride All </Directory>
答案 1 :(得分:6)
这是因为出于安全原因,默认情况下不会启用重写模块。
在rewrite.conf
中创建一个名为/etc/apache2/mods-enabled
的新文件
在文件中放置此行LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
现在重新加载服务器sudo service apache2 restart
这对我有用,希望对你而言,但我不建议这对于生产服务器。这是常规Ubuntu用户不是实时服务器的信息。
答案 2 :(得分:0)
您需要先检查是否启用了mod重写模块。
答案 3 :(得分:0)
尝试了一切,没有任何效果......
2小时后..终于修好了。
首先要排除的事情。
确保您已在 /etc/apache2/apache2.conf 和/ etc / apache2 / sites-enabled / 000-default.conf中进行了更改< / strong>每个人都在谈论......(AllowOverride All和AccessFileName .htaccess一定不能被注释掉)
确保Directory / var / www / html指向正确的文件夹。有时它有/ html,有时它只是/ var / www(但它不能以/我认为结束,但这可能无关紧要。)
成功:)
答案 4 :(得分:0)
问题是默认情况下在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 允许全部覆盖 选项索引FollowSymLinks多视图 允许全部覆盖 订单允许,拒绝 允许所有人
6)保存文件并重新启动apache。
sudo服务apache2重新启动
就是这样,现在您的.htaccess文件可以使用