web-dev-qa-db-ja.com

.htaccessの書き換えルールは有効にならず、リダイレクトは発生しません

最近、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の書き換えが有効になっていることも確認できます。これで問題が解決することを願っています。

1
Phillip Dews

私は最終的にそれを理解し、それは本当に簡単でした。サイトの仮想ホストを変更する代わりに、/ etc/Apache2/Apache2.confにあるApache2.confファイルをそのように変更しました

<Directory /var/www>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

そこまでたどり着くまで少し時間がかかりましたが、方法を知っていれば簡単です!ご助力いただきありがとうございます

1
Phillip Dews