在Amazon Linux上启用mod_rewrite


9

我正在尝试在Amazon Linux实例上启用mod_rewrite。我的目录指令如下所示:

<Directory />
    Order deny,allow
    Allow from all
    Options None
    AllowOverride None
</Directory>

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

然后在httpd.conf中进一步查找LoadModule指令:

... other modules...
#LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
... other modules...

我已经注释掉了Wordpress不需要的所有Apache模块。

仍然,当我发出http重新启动,然后/usr/sbin/httpd -l仅用以下命令检查加载的模块时:

[root@foobar]# /usr/sbin/httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

在包含Wordpress网站的虚拟主机中,我.htaccess包含以下内容:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

.htaccess由apache拥有,apache是​​运行该用户的用户。该apachectl -t命令返回Syntax OK

我的/etc/httpd/conf.d/vhosts.conf样子是这样的:

<VirtualHost *:80>
     ServerAdmin foobar@gmail.com
     ServerName foobar.net
     ServerAlias www.foobar.net
     DocumentRoot /var/www/vhosts/foobar/
     ErrorLog /var/www/vhosts/foobar/logs/error.log
     CustomLog /var/www/vhosts/foobar/logs/access.log combined
</VirtualHost>

我究竟做错了什么?我应该检查什么?

Answers:


5

LoadModule指令将动态加载模块。

尝试RewriteEngine on在虚拟主机中发出,然后apachectl -t确认天气或模块是否已实际加载。


嗨,詹姆斯,您好,谢谢您的回答,我为您指出的问题添加了更多详细信息。RewriteEngine已打开,并且apachectl -t返回语法OK,但仍然无法正常工作。
洛伦佐2012年

抱歉,我删除了我的最后一条评论,这是错误的。您是从wordpress .htaccess文件中获取的,不是吗?您的VHost配置中是否已启用AllowOverride全部?
James Park-Watt 2012年

嗨,詹姆斯,是的,我是从WP那里拿来的。是的,我的DocumentRoot子目录上的AllowOverride设置为All
Lorenzo

请尝试以下操作:在服务器配置中,而不是.htaccess中,添加以下行RewriteEngine OnRewriteRule ^.*$ http://www.wordpress.org/ [R]确认重写是否完全起作用。它应该将所有流量传递到Wordpress网站。
James Park-Watt

我从WP中删除了.htaccess文件,并进行了您建议的更改,但不起作用。
洛伦佐(Lorenzo)2012年

5

我刚刚启动了一个新的Amazon Linux,并遇到了同样的问题,Options FollowSymLink但在那里,但下一行AllowOverride None必须更改为AllowOverride All


3

我的配置正确,但是我需要

Options FollowSymLink

在httpd.conf中我的DocumentRoot声明中,以使mod_rewrite工作。


1

我已经解决了这个问题。

我已在配置文件中更改AllowOverride NoneAllowOverride allOptions Indexes FollowSymLinks/etc/httpd/conf/httpd.conf

谢谢!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.