2014-09-03 4 views
1

이동 경로를 얻고 더 나은 URL 구조를 만들기 위해 새로운 기능을 만들었습니다. 이 전 htaccess 다시 쓰기 규칙에서 여러 경로 제외

나는 다음과 같은 규칙이 있었다 :

RewriteRule ^pages/([a-z0-9,&-]+)/?$ ?action=viewArticleName&page_identifier=$1 [L,NC,QSA,B] 

이 의미를;

www.example.com/pages/contact 

은 DB에서 기사를 반환했습니다. 이 RewriteRule의은을로드하는 이미지 /에서 포함되는 어떤 이미지를 일으키는

RewriteRule ^([^/]+)/([^/]+)$ /?action=viewCategoryName&categoryName=$1&page_identifier=$2 [L] 

문제입니다 : 지금은 그래서이 내 작업 재 작성 규칙 그래서 내 URL이

www.example.com/categoryname/pagename 

모양이 변경을 원 기사에 포함 된 템플릿.

1) 나는 범주 이름의 배열을 만들 수 있습니다

나는 실제 코드를 세 가지 가능한 솔루션으로 생각하지만, 수없는 이유는 무엇입니까? 그런 다음 어떻게 든 RewriteRule을이 이름들에만 적용 할 수 있습니다.

2) 일부 전역 설정을 포함하는 클래스를 만듭니다. 이것에는 이미지 경로를 정의하거나 설정하는 PHP가 있습니다. 내가 생각할 수있는 것은 모두이다.

define("IMAGE_PATH", "//example.com/images"); 

3) Htacces 파일에 무언가를 추가하여 특정 경로를 규칙에서 제외하십시오.

MVC 또는 유사한 것이 훨씬 더 나은 결과를 얻을 수 있다는 것을 알고 있습니다. 이것은 나의 학습에 관한 것이고, ive가 나 자신을 구멍에 여기에서 파 내면 나에게 말해주세요!

많은 감사, 아담

답변

1

이 모든 이미지는이 새로운 규칙의 영향을 받고 않도록하려면 당신은 이 재 작성에서 기존의 모든 파일과 디렉토리를 건너 뛸 수 있습니다 :

# skip all existing files 
RewriteCond %{REQUEST_FILENAME} !-f 
# skip all existing directories 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/?$ /?action=viewCategoryName&categoryName=$1&page_identifier=$2 [L,QSA,B] 

NB, 추가 ' B '를 플래그로 지정하면'& '과 같은 영숫자가 아닌 문자가 이스케이프됩니다.

+1

완벽하게 작동했습니다. 코드의 어떤 부분이 기존의 모든 파일/디렉토리를 건너 뛰고 있는지 설명해 주시겠습니까? – atoms

+1

제 대답에 몇 가지 의견을 추가했습니다. 기본적으로'% {REQUEST_FILENAME}! -f '는 파일이 아니며'% {REQUEST_FILENAME}! -d'는 요청이 디렉토리가 아닌 경우를 의미합니다. – anubhava

+1

은 완벽하게 작동합니다. 정교하게 답해 주시면 귀하의 댓글을 올릴 수 있습니다. – atoms

관련 문제