最近、Digital Oceanでvpsを設定して、サイトをphp7およびhttp2で実行できるようにしました。すべてが正常に実行されていますが、サイトの.htaccessファイルは本来のようにリダイレクトしていません。 .htaccessが機能するように、000-default.confとApache2.confファイルを変更しました!
これは私の.htaccessファイルにあるものです
#ExpiresActive On
#ExpiresByType image/gif "now plus 9 years"
#ExpiresByType image/png "now plus 9 years"
#ExpiresByType image/jpeg "now plus 9 years"
#ExpiresByType image/x-icon "now plus 9 years"
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule .* https://example.com [L,R=301]
RewriteCond %{HTTP_Host} !^www\.
RewriteRule .* https://www.example.com [L,R=301]
RewriteBase /
RewiteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$1 [R=301,NE,L]
このファイルをホストしている他の共有では正常に機能しましたが、ExpiresByTypeのすべてのコメントを外すとサイトが壊れるので、このファイルが機能していることを知っています!また、index.phpはリダイレクトしません。どこかで見逃したことがありますか?
私の質問は不明であると言われているので、私のサイトの.confファイルを提供します。
DirectoryIndex index.php
<LocationMatch "^(.*\.php)$">
ProxyPass fcgi://127.0.0.1:9000/var/www/example.com/public_html
</LocationMatch>
NameVirtualHost *:443
<VirtualHost *:443>
AccessFileName .htaccess
ServerName www.example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile "/etc/letsencrypt/live/example.com/cert.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/example.com/privkey.pem"
SSLCertificateChainFile "/etc/letsencrypt/live/example.com/chain.pem"
Protocols h2 http/1.1
H2Direct on
ServerAdmin [email protected]
DocumentRoot /var/www/example.com/public_html
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Sudo a2enmodの書き換えが有効になっていることも確認できます。これで問題が解決することを願っています。
私は最終的にそれを理解し、それは本当に簡単でした。サイトの仮想ホストを変更する代わりに、/ etc/Apache2/Apache2.confにあるApache2.confファイルをそのように変更しました
<Directory /var/www>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
そこまでたどり着くまで少し時間がかかりましたが、方法を知っていれば簡単です!ご助力いただきありがとうございます