.htaccess 동적 중첩 URL로 리디렉션하는 방법

.htaccess 동적 중첩 URL로 리디렉션하는 방법

쓰기 규칙을 어떻게 사용합니까?

리디렉션해야 합니다

www.example.com/accesories

에게

www.example.com/accesories/item

업데이트:사용하면 Redirect /accesories /accesories/items다음을 받습니다.

www.example.com//accesories/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/

답변1

Redirect /accesories /accesories/items

Redirect예, mod_alias 지시어는 접두어 일치이므로 리디렉션 루프가 발생합니다.아파치 문서(내 자신을 강조):

...모든 요청~으로 시작하는URL 경로는 대상 URL 위치의 클라이언트에 리디렉션 요청을 반환합니다.일치하는 URL 경로 이외의 추가 경로 정보가 대상 URL에 추가됩니다.

해당 특정 URL만 리디렉션하려면 다음 RedirectMatch지시어 를 사용해야 합니다.*1대신 정규식과 일치합니다. 예를 들어:

RedirectMatch ^/accesories$ /accesories/items

*1이미 다른 지시어에서 mod_rewrite를 사용하고 있지 않은 한(이것이 내가 "다른 지시어가 무엇입니까?"라고 질문한 이유입니다) 이 경우 대신 mod_rewrite를 사용하는 것이 더 나을 수 있습니다.

"동적" - 액세서리는 제품이 포함된 카테고리이지만 제품이 /accessories/items로 리디렉션되어야 하는 이유를 보여주고 싶지 않기 때문입니다.

이것이 무엇을 의미하는지 잘 모르겠지만 로 리디렉션해야 하는 경우 /accesories/<products>단일 경로 세그먼트가 /accesories/items어디 일 수 있는지를 제외하고 는 지시어에서 부정적인 예측을 사용하여 다음과 같은 작업을 수행해야 합니다 (또는 mod_rewrite를 사용하십시오). ). 예를 들어:<products>itemsRedirectMatch

RedirectMatch ^/accesories(/(?!items)[^/]*)?$ /accesories/items

위의 내용은 /accesories, /accesories//accesories/<anything>을 리디렉션하지만 /accesories/items리디렉션 루프를 생성하기 때문에 그렇지는 않습니다 /accesories/items.

이는 302(임시) 리디렉션이라는 점에 유의하세요. (잠재적인 캐싱 문제를 방지하려면 항상 302로 테스트하고, 의도한 경우에만 나중에 301로 변경하십시오.)

지시문의 순서가 .htaccess중요할 수 있습니다. 외부 리디렉션은 일반적으로 파일 상단 근처로 이동해야 합니다 .htaccess.

관련 정보