2017-09-30 7 views
1

내 URL (png, gif)에서 2 개의 확장명을 삭제하고 싶습니다. 내 코드는 첫 번째 확장 유형에서만 작동합니다. png가 처음 나올 때는 확장자가 삭제되지만 gif 이미지는 열 수 없습니다. png를 gif로 변경하면 확장자없이 gif를 열 수 있지만 열린 PNG 이미지는 열 수 없습니다.htaccess 여러 확장명을 삭제하는 방법

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.png [NC,L] 
RewriteRule ^([^\.]+)$ $1.gif [NC,L] 






RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^./]+\.png)$ /imgs/$1 [L,NC] 
RewriteRule ^([^./]+\.gif)$ /imgs/$1 [L,NC] 

내 htaccess로는> 그냥 메인 디렉토리이다,

주요 디렉토리에 imgs 만 .png를하고 .gif 파일을 찾을 수있는 "imgs"폴더에서

입니다. 내부적으로 .png 또는 .gif 확장을 다시 URL을 작성하는 경우

+0

그리고 당신은 예를 들어, 액세스하는

는 다음과 같은 규칙이 시도를 설정주십시오. 'localhost/imgs/23252768.gif' 또는'localhost/imgs/23252768' 또는'localhost/23252768.gif'? – hjpotter92

+1

localhost/23252768 에서 사용할 수있게하려고 노력 중입니다. 그런 식으로 사용할 때 GIF 이미지에만 사용할 수 있습니다. png의 경우 끝에 .png를 추가해야합니다. –

+0

아래 답변을 업데이트했습니다. 새로운 스 니펫으로 시도하십시오. – hjpotter92

답변

0

, 그렇지 않으면, /path/to/image.gif 같은 경로가 /path/to/image로 리디렉션됩니다뿐만 아니라 자신의 존재를 확인해야하며, 항상가 다시 작성됩니다 ~ /path/to/image.png으로 존재하지 않습니다.

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteCond %{DOCUMENT_ROOT}/imgs%{REQUEST_URI}.png -f 
RewriteRule ^([^\.]+)$ $1.png [NC,L] 

RewriteCond %{DOCUMENT_ROOT}/imgs%{REQUEST_URI}.gif -f 
RewriteRule ^([^\.]+)$ $1.gif [NC,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^./]+)\.(gif|png)$ /imgs/$1.$2 [L,NC] 
+0

해당 코드 gif 이미지가 작동하지만 png 이미지가 없습니다.서버가 "이 서버에서 요청한 URL /imgs/23252768.gif을 (를) 찾을 수 없습니다." png 대신 gif를 검색하는 것 같습니다. –

+0

@adamadamowki htaccess 파일의 위치, 서버 디렉토리 구조 및 액세스중인 파일을 알려주십시오. 질문에서 같은 것을 수정하십시오. – hjpotter92

0

이 코드를보십시오 :

RewriteEngine on 
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(.*?)\.(png|gif)[\s?/] [NC] 
RewriteRule (.*)$ /%1%2 [R=302,L,NE]