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

mod_rewrite が機能するためには、httpd.conf の DocumentRoot の宣言で次の行を追加します。

答え4

この問題の解決策を見つけました.....

設定ファイルで以下の AllowOverride Noneように変更しましたAllowOverride allOptions Indexes FollowSymLinks/etc/httpd/conf/httpd.conf

ありがとう!

関連情報