Apache的mod_rewrite不能使用.htaccess文件

好的,我遇到了一些关于aws或者其他什么的问题,所以我似乎无法得到mod_rewrite的工作。

仅用于testing目的,我已经完成了以下工作:

1使用aws控制台从向导部署新鲜的ami 64位实例

2 yum安装apache

3编辑/etc/httpd/conf/httpd.conf:这样

<Directory /> Options FollowSymLinks AllowOverride None </Directory> 

好像

 <Directory /> Options FollowSymLinks AllowOverride All </Directory> 

4确定

 LoadModule rewrite_module modules/mod_rewrite.so 

在文件中,并取消注释。

5重新启动apache:

  sudo /sbin/service httpd restart 

6创build了两个新文件:

 /var/www/html/test1.html 

包含:

 this is test1! /var/www/html/test2.html 

包含:

 this is test2! 

7创build文件:

 /var/www/html/.htaccess 

包含(IN TOTAL):

 RewriteEngine on RewriteRule ^test1\.html$ test2.html [L] 

8去了:

 http://[my aws server]/test1.html 

得到“这是test1!”

我在这里做错了什么,但是对于我的生活,我不知道是什么。 任何帮助是极大的赞赏…

编辑:我添加了无稽的字符/数字到我的.htaccess文件的开始,并重新启动apache(不是100%确定是必要的,但嘿…),什么都没有发生。 换句话说,我希望去url [aws服务器] /test1.html会导致某种错误,但它没有。 我怀疑Apache甚至没有读取.htaccess文件。

编辑:我将以下内容添加到我的httpd.conf文件中:

 RewriteLog "/tmp/rewrite.log" RewriteLogLevel 9 

这个文件是在我重新启动apache的时候创build的,但是当我转到我设置的任何一个页面的时候,都没有任何东西进入。 我没有在这里做非常非常基本的事情,但我不确定…

Solutions Collecting From Web of "Apache的mod_rewrite不能使用.htaccess文件"

不知道这是你的问题的原因,但你不应该惹的祸

 <Directory /> Options FollowSymLinks AllowOverride None </Directory> 

线,它应该是这样的:

 <Directory /> Options FollowSymLinks AllowOverride None Deny from all </Directory> 

您应该将文档根目录添加为不同的容器 :

 <Directory /var/www/html/> Options FollowSymLinks AllowOverride All Allow from all </Directory> 

花了我一段时间来找到这个,但在一些安装Apache将使用多个配置文件。

查看“ /etc/apache2/sites-enabled/000-default ”,并检查AllowOveride是否设置为All

尝试一下。 这为我工作。 首先,您需要确保.htaccess文件放在正确的目录中。 为此,请转到启用了网站的文件夹,并检查启用了哪些.conf文件。

 cd /etc/apache2/sites-enabled ls 

例如:000-default.conf

然后,goto sites-available文件夹来编辑.conf文件。

 cd ../sites-available sudo gedit 000-default.conf 

找到DocumentRoot并再次检查目录。 如果你把.htaccess文件放在/var/www/html/.htaccess中,所以这一行看起来像这样:

 DocumentRoot /var/www/html/ 

第二,你需要修改<Directory>块看起来像这样。

  <Directory /var/www/html> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all # This directive allows us to have apache2's default start page # in /apache2-default/, but still have / go to the right place #RedirectMatch ^/$ /apache2-default/ </Directory> 

最后,保存文件并重新启动apache

 service apache2 restart 

希望这个帮助!