.htaccessが機能しない(apache2 | ubuntu 18.04)
ウェブサイトは正常に機能しています。ファイル.htaccessが機能しないだけです。グーグルでたくさん検索し、すでに有効a2enmod rewrite
にしてたくさんのことを試しましたが、機能しませんでした。
obs:例としてウェブサイトexample.comを使用しています
これ/etc/apache2/sites-available/000-default.conf
は私の方法です:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
そしてこれ/etc/apache2/apache2.conf
は私の方法です:
<Directory />
Options FollowSymLinks
AllowOverride All
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
これが私の.htaccessです。
#DISALOW DIRECTORY LISTING
Options -Indexes
ErrorDocument 400 /.error.php
ErrorDocument 401 /.error.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 405 /.error.php
ErrorDocument 408 /.error.php
ErrorDocument 414 /.error.php
ErrorDocument 500 /500.php
ErrorDocument 502 /.error.php
ErrorDocument 504 /.error.php
ただし、ディレクトリリストを禁止したり、404.php
ページが見つからないときにコンテンツを表示したりすることはできません。
回答
4 pa4080
AllowOverrideディレクティブの現在のデフォルト設定が問題の原因です。.htaccess
特定の仮想ホストのファイルによって可能なすべてのオーバーライドを許可する場合は、次のように構成を変更する必要があります。
cat /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot "/var/www/example.com/public_html"
<Directory "/var/www/example.com/public_html">
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
.confファイルの変更後、Apacheをリロードまたは再起動することを忘れないでください。