it-swarm-ko.tech

Permalink 구조 변경 - htaccess의 리디렉션은 아카이브 링크를 끊습니다

내 블로그에서 시작했을 때 퍼머 링크 및 다음 구조 :

http://<domain>/%year%/%monthnum%/%day%/%postname%/

얼마 전, 퍼머 링크 구조를 "http://<domain>/%postname%/"로 변경했습니다.

이전 퍼머 링크 구조에 대한 외부 링크를 다루기 위해 htaccess-file에 다음 줄을 추가했습니다.

RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ http://<domain>/$4

이제 문제는 리디렉션 줄이 아카이브 링크를 끊는 것입니다 (예 : "http://<domain>/2010/09/02"는 2010 년 9 월 2 일부터 게시물을 표시하는 대신 첫 페이지로 리디렉션됩니다.

Htaccess에서 리디렉션 지시문을 수정하는 것이 가능합니까, 아니면 케이크를 먹을 수 없을 것입니까?

2
TFM

Mod_Alias의 RedirectMatch는 Mod_Rewrite만큼 강력하지 않습니다. 호스트에 Mod_Rewrite가있는 경우 (Pretty Permalinks에서는이를 사용합니다) URL이 Archive 링크 형식이 아닌 경우에만 리디렉션을 만들 수 있습니다.

RewriteCond 및 리디렉션 명령을 만들기 위해 RewriteRule ... [R=301] 지시어.

데이터를 기반으로 한 예 :

RewriteCond %{REQUEST_URI} !^/((20|19)[0-9]{2})/([0-9]{2})/[0-9]{2}$ [NC]
RewriteRule ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$ http://<domain>/$4 [R=301,L]

이것은 테스트되지 않았지만 작업을 수행해야한다고 생각합니다. 수량을 예상 한 개수를 더 구체적으로 지정하기 위해 한정 기호 ({2})를 사용했습니다. RewriteCond의 그것 옆에 나는 20 .. 19 년 만 일치하는 패턴을 만들었습니다.

첫 번째 줄 (RewriteCond 조건)은 Archive-URL과 일치하지 않는지 확인하고 일치하지 않는 경우에만 리디렉션을 수행 할 규칙이 실행됩니다. RewriteRule은 기본적으로 RedirectMatch 지시문과 동일하게 작동합니다.

2
hakre