
我正在嘗試在 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 restart 然後檢查加載的模組時,/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 [email protected]
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>
我究竟做錯了什麼?我該檢查什麼?
答案1
LoadModule 指令將動態載入模組。
嘗試RewriteEngine on
在虛擬主機中發出命令,然後apachectl -t
確認模組是否已實際載入。
答案2
我剛剛啟動了一個新的 amazon linux 並遇到了相同的問題,Options FollowSymLink
但下一行AllowOverride None
必須更改為AllowOverride All
答案3
我的配置是正確的,但我需要
Options FollowSymLink
在我的 DocumentRoot 在 httpd.conf 中的聲明中,讓 mod_rewrite 運作。
答案4
我得到了這個問題的解決方案...
我已更改AllowOverride None
為AllowOverride all
, 下面
Options Indexes FollowSymLinks
在配置文件中/etc/httpd/conf/httpd.conf
謝謝!