RewriteRule 戻り権限と一致する要求が拒否されました。

RewriteRule 戻り権限と一致する要求が拒否されました。

奇妙なApacheエラーが発生しました。次のすべての/api/media/fi/le/path.jpg要求を書き換えたいです。/media/fi/le/path.jpg

仮想ホストに設定された書き換え規則は次のとおりです。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule /api/v1/* /src/api/v1/index.php [L]
RewriteRule /api/media/(.*) /media/$1 [L]

ブラウザでサーバーを指すと、/media/fi/le/path.jpg画像が正常にインポートされます。私が行くと、/api/media/fi/le/path.jpgリソースにアクセスする権限がないと文句を言うでしょう。書き換えなくてもファイルにアクセスできるため、許可が必要です。画像を提供できるように、最後のRewriteRuleをどのようにオーバーライドする必要がありますか?

LogLevel alert rewrite:trace6Apacheが後で何をしているかを見るためにロギングディレクティブを追加しました。結果は次のとおりです。

 init rewrite engine with requested uri /api/media/32/ee/0e60731bcb220c7c7b.jpg
 applying pattern '/api/v1/*' to uri '/api/media/32/ee/0e60731bcb220c7c7b.jpg'
 applying pattern '/api/media/(.*)' to uri '/api/media/32/ee/0e60731bcb220c7c7b.jpg'
 rewrite '/api/media/32/ee/0e60731bcb220c7c7b.jpg' -> '/media/32/ee/0e60731bcb220c7c7b.jpg'
 local path result: /media/32/ee/0e60731bcb220c7c7b.jpg
 go-ahead with /media/32/ee/0e60731bcb220c7c7b.jpg [OK]

URLに手動でアクセスできmydomain.com/media/32/ee/0e60731bcb220c7c7b.jpg、画像は問題なくサーバーに配信されます。私は何を見逃していますか?

.confファイルを完成させる:

<IfModule mod_ssl.c>
  <VirtualHost *:443>
        DocumentRoot /home/user/project/src
        ServerName project.com
        ErrorLog logs/project-error_log
        CustomLog logs/project-access_log common
        DirectoryIndex index.php

        <Directory /home/user/project/src>
            Options -Indexes +FollowSymLinks
            AllowOverride None
            Require all granted
        </Directory>

        LogLevel alert rewrite:trace6
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule /api/v1/* /api/v1/index.php
        RewriteRule /api/media/(.*) /media/$1 [L]

        SSLCertificateFile /etc/letsencrypt/live/project.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/project.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateChainFile /etc/letsencrypt/live/project.com/chain.pem
    </VirtualHost>
</IfModule>

答え1

書き換えエンジンに奇妙な動作があります。

RewriteRule /api/media/(.*) /media/$1 [L]

返品は永遠に禁止されます。mv media images上記のディレクティブをに変更した後、RewriteRule /api/media/(.*) /images/$1 [L]権限エラーは消えました。

関連情報