Apache-2.2

在 Amazon Linux 上啟用 mod_rewrite

  • December 10, 2021

我正在嘗試在 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 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>

我究竟做錯了什麼?我應該檢查什麼?

LoadModule 指令將動態載入模組。

嘗試RewriteEngine on在虛擬主機中發出,然後apachectl -t確認天氣是否實際載入了模組。

我剛開始一個新的 amazon linux 並且遇到了同樣的問題並且在Options FollowSymLink那裡但是下一行AllowOverride None必須更改為AllowOverride All

引用自:https://serverfault.com/questions/445599