2012-09-11 4 views
0
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?$1=1 [L] 
RewriteRule ^([a-zA-Z0-9]+)$ index.php?$1=1 [L] 

#if category 
RewriteRule ^category/([a-zA-Z0-9]+)/$ index.php?results=true&lid=$1 [L,NC] 
RewriteRule ^category/([a-zA-Z0-9]+)$ index.php?results=true&lid=$1 [L,NC] 

첫 번째 섹션은 URL에 카테고리를 추가 할 때 잘 작동합니다. 다른 매개 변수보다 먼저 카테고리를 작성하므로 CSS와 이미지가 사라집니다.htaccess의 다중 RewriteRule

mywebsite.com/category/380은 mywebsite.com/index.php?results=true & lid = 380으로 리디렉션되어야하지만 원래 URL에는 사진과 CSS가 있지만 깨끗한 URL은 아닙니다.

답변

0

상대적인 URI가 변경되어 CSS와 이미지가 절대 (예 : <img src="/image_folder/image.png">)가 아닌 상대 링크 (예 : <img src="image_folder/image.png">) 였기 때문입니다.

원래베이스는 /이고, 여기에서 index.php은 sat이다. 하지만 일단 /category/something이 있으면 기지는 /category/이됩니다. 그래서 당신은 (슬래시를 추가하여) 상대에서 절대 귀하의 모든 링크를 변경할 수 있습니다, 또는 당신은 모든 페이지의 헤더에이를 추가 할 수 있습니다

<base href="/"> 

CSS와 이미지 링크하는 경우 URI 앞에 /category/이 이미 생성되어 있으면 해당 프레임 워크와 관련된 것으로 들립니다. 하지만 아무런 수정 사항이 없다면 이미 가지고있는 규칙 위에이 규칙을 추가 할 수 있습니다 :

# if the request ends with one of these extensions 
RewriteCond %{REQUEST_URI} \.(css|png|gif|jpe?g|bmp|ico|js)$ [NC] 
RewriteRule ^category/(.*)$ /$1 [L] 
+0

내가/category/something을 입력하면 앞 페이지에만 적용됩니다. 헤더 파일은 원본 태그와 동일하지만 실제 URL 앞에있는 모든 URL 내부/카테고리 –

+0

@ Mr.Crowley 이러한 페이지는 어떻게 생성합니까? ** **/category /'와 함께 이미 생성되고 있습니다. - 내 대답을 편집했습니다 –

+0

페이지가 mysql에서 루프에서 생성됩니다. 아니 그들은 생성하는 동안 카테고리 접두사를 가지고 있지 않지만 깨끗한 URL이로드 된 페이지 이후에 모든 링크에 카테고리가 있습니다. rewriteRule이 자기 반복을하는 것처럼 보입니다 ... 몰라요. 붙어 있어요. –