URL書き換えを有効にしようとすると機能しません。コマンドを使用して有効にsudo a2enmod rewrite
しますsudo service apache2 restart
。ただし、ルートフォルダとサブフォルダではURLの書き換えは機能しません。
PS:次のコマンドを使用すると、サーバーから次の応答が得られますsudo a2enmod rewrite
。
Module rewrite already enabled
リクエストに応じて:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride all
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
答え1
Apache2にはデフォルトでmod_rewriteがインストールされています。このような場合を確認するには、/etc/apache2/mods-available/rewrite.loadがあることを確認してください。
$ cat /etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
mod_rewriteを有効にしてロードするには、残りの手順に従ってください。
$ sudo a2enmod rewrite
上記のコマンドは、/etc/apache2/mods-enabled にシンボリックリンクを生成します。
$ ls -al /etc/apache2/mods-enabled/rewrite.load
lrwxrwxrwx 1 root root 30 Dec 9 23:10 /etc/apache2/mods-enabled/rewrite.load -> ../mods-available/rewrite.load
次に、次のファイルを開き、「AllowOverride None」をそれぞれ「AllowOverride all」に置き換えます。
$ sudo vi /etc/apache2/sites-available/default
最後に、Apache2を再起動します。
以下は.htaccessファイルの例です。
Options +FollowSymlinks
RewriteEngine On
RewriteRule index.php / [L,R=301]