在 Amazon Linux 上啟用 mod_rewrite

在 Amazon Linux 上啟用 mod_rewrite

我正在嘗試在 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 NoneAllowOverride all, 下面 Options Indexes FollowSymLinks在配置文件中/etc/httpd/conf/httpd.conf

謝謝!

相關內容