Apache Mod_rewrite 및 Alias를 동시에 사용하는 방법은 무엇입니까?
-
22-07-2019 - |
문제
별도의 관리자 시스템에서 업로드 된 이미지를 저장하는 데 사용되는 Webroot 외부의 디렉토리가 있습니다. 이미지는이 형식으로 저장됩니다.
filepath/writable/images/00/00/23/65/filename-236581.jpg
(Webroot가 Filepath/HTML 인 곳)
...예를 들어. 여기서는 236이 데이터베이스의 이미지의 ID이며 파일 시스템은 번호가 매겨진 디렉토리로 나뉘어 100 개 이상의 inode가 하나의 디렉토리 내에서 사용되는 것을 중지합니다.
다음과 같이 프론트 엔드 웹 서버에서 이들 액세스 할 수 있기를 원합니다.
http://(server)/filename-236581.jpg
여기서 Filename은 실제 파일의 이름과 동일한 Seo-Opmentied String입니다.
Mod-Lerewrite가 추가 번호가 매겨진 디렉토리를 포함하도록 URL을 다시 작성하도록 할 수 있으며, Alias를 쓸 수있는/이미지 디렉토리로 리디렉션 할 수 있지만 동시에 둘 다 할 수는 없습니다. 별칭과 mod_rewrite 지시문을 모두 넣으면 별명을 무시하고 오류 로그는 FilePath/HTML/Uploaded-Images를 찾을 수 없다고 불평합니다.
지금까지 내가 가지고있는 것은 다음과 같습니다.
RewriteRule ^(.*)\/([^\/]*)-([0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/00/00/00/00/$2-$3.$4 [L,NC]
... 그리고 마찬가지로,
RewriteRule ^(.*)\/([^\/]*)-([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/$3$4/$5$6/$7$8/$9$10/$2-$3$4$5$6$7$8$9$10$11$12.$13 [L,NC]
alias /uploaded-images "filepath/writable/images"
L]를 제거하면 차이가 없습니다.
해결책
l]은 마지막을 의미합니다.
실제로 사용해야 할 것은 [PT] 플래그이며, 다시 쓰기 규칙의 결과 경로는 귀하의 경우 별명 지시문 인 다음 핸들러로 전달되어야 함을 나타냅니다.
pt] 태그는 또한 더 이상 [l]가 필요하지 않은 [l] 태그를 의미합니다.
다른 팁
다시 쓰기가 "마지막"을 의미하는 [l
솔직히 말해서, 나는 이것이 더 많은 재 작문 라인이 무시 될 것이라는 것을 의미했지만 체크 아웃 할 가치가 있다고 생각했습니다.