奇妙な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:trace6
Apacheが後で何をしているかを見るためにロギングディレクティブを追加しました。結果は次のとおりです。
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]
権限エラーは消えました。