2011-10-05 7 views
1

내 웹 사이트의 특정 URL을 다시 작성해야하지만 꽤 오랜 시간 동안 검색을 수행하는 방법을 찾을 수는 없습니다.Apache : 동적 URL을 다시 쓰는 방법

일치 할 필요가 원래 URL이 형식에 : http://www.example.com/gallery/?level=picture&id=49

나는이 형식으로 그들을 필요 http://www.example.com/index.php?page=gallery&level=picture&id=49

그러나 폴더는 또한뿐만 아니라 일부 이미지 파일이 포함되어 있습니다 . 위의 URL을 다시 쓰려면 php 페이지를 가리키는 모든 URL이 필요합니다.

나는 내가하고 싶은 것을 알고 있지만 그것을하는 방법을 안다. 기본적으로 나는 .htaccess에서 이것을 할 필요가있다. :

if(url contains 'gallery/' AND filetype != bmp/jpg/png/etc){ 
REPLACE '/gallery/' WITH '/index.php?page=gallery&' AND append original query string variables 
} 

어떤 도움도 크게 주시면 감사하겠습니다.

+0

도움이 될만한 사람이 있습니까? –

답변

1

그래서이 문제를 해결해 준 해결책을 발견했습니다. 지금 내 .htaccess 파일에서 작업하고 있습니다. 내가 원래 언급 한 바와 같이 나는 이미지를 재 작성 URL을하지 않았기 때문에

RewriteCond %{REQUEST_URI} !\.(bmp|jpg|jpeg|png|gif)$ 
RewriteRule ^gallery/$ /index.php?page=gallery [R=302,QSA] 

(내가 말한 된 것과) 첫 번째 라인은이 규칙이 적용되는 나열된 파일 형식을 제외합니다. = http://www.yoursite.com/index.php?page=gallery&level=picture&id=52

을하며 새로운 "페이지에 추가하여, 장소에 원래의 쿼리 문자열을 잎 :

는 두 번째 줄은이 같은 URL을 취 http://www.yoursite.com/gallery/?level=picture&id=52

을하고 이것에 변 갤러리 "변수. 또한 사용자가 브라우저에 올바른 주소가 표시되도록 302 리디렉션을 수행합니다.

다른 사람에게 도움이되는지는 모르겠지만 질문을 올린 후 발견 한 해결책을 게시하겠다고 생각한 것 같습니다.

0

이것은 원하는 것보다 조금 더 일반적 일 수 있지만 다른 기존 파일을 다시 쓰지 않아도됩니다.

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule !^/gallery/(.+)$ index.php [QSA] 
+0

"하지만 기존 파일을 다시 작성하지 않아도된다"고 말했을 때 정확히 무슨 뜻입니까? 또한 이미지를 제외한 모든 파일에 대해이 규칙이 URL과 일치합니까? 또한 원래 쿼리 문자열을 추가해야 할뿐만 아니라 예제에서도 언급했듯이 변수를 추가해야합니다. 코드의 두 번째 줄에있는 index.php를 index.php? page = gallery로 변경 한 다음 원본 쿼리 문자열을 추가 할 수 있습니까? –

관련 문제