Linux apache mod_rewrite无法使用.htaccess文件

Linux apache mod_rewrite无法使用.htaccess文件,linux,.htaccess,mod-rewrite,amazon-web-services,Linux,.htaccess,Mod Rewrite,Amazon Web Services,好吧,我在aws或其他方面遇到了一些问题,以至于我似乎无法让mod_rewrite正常工作 出于测试目的,我做了以下工作: 1使用aws控制台从向导部署新的ami 64位实例 2安装了apache 3编辑的/etc/httpd/conf/httpd.conf: 所以 位于文件中且未注释 5.重新启动的apache: sudo /sbin/service httpd restart 6创建了两个新文件: /var/www/html/test1.html 包含: this is test1!

好吧,我在aws或其他方面遇到了一些问题,以至于我似乎无法让mod_rewrite正常工作

出于测试目的,我做了以下工作:

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

2安装了apache

3编辑的/etc/httpd/conf/httpd.conf: 所以

位于文件中且未注释

5.重新启动的apache:

 sudo /sbin/service httpd restart
6创建了两个新文件:

/var/www/html/test1.html
包含:

this is test1!

/var/www/html/test2.html
this is test2!
包含:

this is test1!

/var/www/html/test2.html
this is test2!
7创建的文件:

/var/www/html/.htaccess
包含(总计):

8前往:

http://[my aws server]/test1.html
我得到“这是测试1!”

我在这里做错了什么,但我一辈子都不知道是什么。非常感谢您的帮助

编辑:我在.htaccess文件的开头添加了无意义的字符/数字,并重新启动了apache(不是100%确定这是必要的,但是什么都没有发生)。换句话说,我希望转到url[aws server]/test1.html会导致某种错误,但事实并非如此。我怀疑apache甚至没有读取.htaccess文件

编辑:我在httpd.conf文件中添加了以下内容:

RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 9

该文件是在我重新启动apache时创建的,但当我转到我设置的任何一个页面时,都没有任何内容进入其中。我在这里没有做一些非常非常基本的事情,但我不确定是什么…

不确定这是否是您的问题的原因,但您不应该干扰

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

选项如下符号链接
不允许超限
行,应该是这样的:

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

选项如下符号链接
不允许超限
全盘否定
你应该:


选项如下符号链接
允许超越所有
通融

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

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

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

cd /etc/apache2/sites-enabled
ls
Ex:000-default.conf

然后,转到sites available文件夹以编辑该.conf文件

cd ../sites-available
sudo gedit 000-default.conf
查找以记录根目录并再次检查目录。 如果将.htaccess文件放在/var/www/html/.htaccess中,则此行如下所示:

DocumentRoot /var/www/html/
第二,需要修改
块,如下所示

    <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>

希望这有帮助

谢谢你,乔恩。我已经看到你所概述的是“正确”的方法,我只是想介绍最简单的测试。我将目录选项重新设置为默认值,并将下面概述的代码添加到我的httpd.conf文件中。由于默认情况下我的docroot是您已经指定的目录,因此我保存并重新启动了apache。不幸的是,这似乎并没有解决问题:(@snuggles我唯一能想到的另一件事是检查您的
AccessFileName
配置,它应该设置为
.htaccess
,但如果是其他内容,那么您的
.htaccess
文件将被完全忽略。另外,请确保apache进程可以读取
.htaccess
文件。您引导我找到正确的di回复:httpd.conf文件已经有了一个/var/www/html的部分,其中有“AllowOverride None”。坦白说,我没有想到要在conf文件中查找一个已经存在的部分,我假设它只是带有默认的.jeeeez。我设置了“AllowOverride All”,一切都正常。谢谢Jon!注意,我知道有很多这样的问题这是一个问题。我一直在努力寻找解决我问题的方法。但是如果有人能给我指出一个好的或完整的mod_rewrite疑难解答问题,我将不胜感激!只是为了让解决方案更加明显,因为它包含在我下面的评论中:httpd.conf文件已经有一个用于/var/www/html的部分,该部分已经存在“AllowOverride None”在其中。我没有更改它,而是尝试添加第二个,但被忽略了。经验教训:首先检查以确保您没有复制现有的部分!:)这让我真的不应该…谢谢!
cd ../sites-available
sudo gedit 000-default.conf
DocumentRoot /var/www/html/
    <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>
service apache2 restart