2016-08-24 3 views
1

.htaccess 파일에서 다음 재 작성을 수행했지만 리디렉션 대신 404에 착륙합니다..htaccess 리디렉션은 여전히 ​​404로 이동합니다.

RewriteCond %{QUERY_STRING} tab=auto_data(.*)$ 
RewriteRule ^(.*)$ https://test.example.com/automobile-data/ [L,R=301] 

는 아마도 tab=auto_data 쿼리 문자열 매개 변수를 가질 수있는 여러 페이지가 있습니다,뿐만 아니라 tab=auto_data 뒤에 추가 된 다른 QSP는 아마도이 있습니다.

QSP가 tab=auto_data 인 모든 URL을 사이트의 새 페이지로 리디렉션해야합니다. 도메인은 동일하게 유지되며 페이지 이름 만 변경됩니다.

내가 뭘 잘못하고 있니?

+0

요청의 URL은 무엇입니까? 타겟에 필요한 요청이 있습니까 (즉, 'RewriteRule' 패턴으로 그룹을 캡처하는 이유)? 아마도 당신은'RewriteEngine' 등을 가지고 있을까요? .htaccess 파일의 다른 지시문은 무엇입니까? 덧붙여서, 여러분은 _CondPattern_의 끝 부분에'(. *) $'이 필요 없다. – MrWhite

+0

유일한 다른 지시어는 표준 WordPress 지시어입니다. 나는이 재료에 익숙하지 않지만 'RewriteEngine' 엔진이 켜져 있습니다. 귀하의 질문을 올바르게 이해하면 들어오는 URL은'https : //test.example.com/polk/? tab = auto_data'이고'https://test.example.com/automobile-data/ '로 리디렉션되어야합니다. '. – AndyWarren

+0

"도메인은 동일하게 유지됩니다"- 실제로 위의 작업이 수행되면 리디렉션 루프가 발생합니다. – MrWhite

답변

2

유일한 다른 지시어는 표준 WordPress 지시어입니다. 이 경우

, 당신의 외부 리디렉션는 지시를 라우팅 어떤 워드 프레스 전에 을 제공한다. RewriteEngine 지시문은 파일의 한 번, 어디서나 표시되어야합니다. 그것은 한 번 상단에 발생하는 경우 분명히 더 논리적이지만.

또한 대체 문자열에서 검색어 문자열을 삭제해야합니다. 그렇지 않으면 도메인이 동일하기 때문에 리디렉션 루프가 발생합니다. 도메인/호스트가 동일하게 유지되면 대체에서 생략 될 수 있습니다. 이보다 일반적인 될 필요하지 않는 한,

RewriteCond %{QUERY_STRING} tab=auto_data 
RewriteRule ^polk/$ /automobile-data/? [R=301,L] 

이 구체적으로 (의견에서 언급 한 바와 같이)에만 URL 경로 /polk/ 일치 :

는 다음과 같은 시도? tab=auto_data은 쿼리 문자열의 어느 곳에 나 일치해야합니다.

대체 끝에 ?은 쿼리 문자열을 제거하므로 리디렉션 루프가 발생하지 않습니다. (아마도 쿼리 문자열은 대상에서 제거되어야합니다.) 원본 및 대상 URL 경로가 다르므로 더 이상 필요하지 않습니다.

"도메인이 동일하게 유지되는 경우"이 필요합니다. 대체에 구성표와 호스트가 포함되어야합니다. 여러 도메인 등을 호스팅하지 않는 한?

캐싱에 대해 악명 높은 301으로 테스트하기 전에 브라우저 캐시가 지워 졌는지 확인하십시오. 이러한 이유로 302s 테스트가 더 바람직 할 수 있습니다.

UPDATE : 특별히 같은 노력이 쿼리 문자열 매개 변수를 제거, 타겟으로 나머지 쿼리 문자열을 복사하려면 :

RewriteCond %{QUERY_STRING} ^tab=auto_data(?:&(.+))? 
RewriteRule ^polk/$ /automobile-data/?%1 [R=301,L] 

(?:&(.+))?을 -, 나머지 쿼리 문자열 (있는 경우)를 잡고 있지만, 캡처 된 그룹에서 & 접두사 (매개 변수 구분 기호)를 제외합니다. %1은이 캡처 된 그룹에 대한 역 참조입니다.

+0

이렇게하면 리디렉션이 올바르게 작동합니다. 그러나'tab = auto_data' 이후의 추가 쿼리 문자열 매개 변수는 손실되어 새로운 URL에 추가되지 않습니다. – AndyWarren

+1

우리는'/ polk /'URL (대체 URL과 다름)만을 대상으로하므로 대체가 끝나면'?'를 제거 할 수 있습니다. 이것은 또한'tab = auto_data' 매개 변수를 통해서도 가능합니다. – MrWhite

+0

이 부분을 명확하게하기 위해 리다이렉트 후에'tab = auto_data'는 더 이상 필요하지 않습니다. 그러나 추가 쿼리 문자열 매개 변수가 있으면 사이트의 컨텐트와 설정을 변경할 때 필요합니다. – AndyWarren

관련 문제