이상한 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]
권한 오류가 사라졌습니다.