2012-12-12 5 views
0

전 stackoverflow를 검색했습니다. 그러나이 상황에 대한 응답이없는 것으로 보입니다. httpd.conf 파일에 이미 mod_rewrite 규칙을 사용하고 있습니다. 나는 최근에 구글이의 쿼리 문자열 내 비 재 작성 URL 중 하나를 색인 것을 발견했다 :쿼리 문자열을 사용하여 URL을 리디렉션하는 mod_rewrite

http://domain.com/?state=arizona

나는 301이 URL로 리디렉션 할 mod_rewrite를를 사용하고자하는

:

http://domain.com/arizona

문제는 나중에 다시 작성 규칙에서 WordPress에 쿼리 변수를 전달하기 위해 두 번째 URL을 다시 작성한다는 것입니다. 적절한 기능입니다

http://domain.com/index.php?state=arizona

: 그것은에 다시 점점 끝납니다. 지금까지 시도한 모든 것은 전혀 작동하지 않았거나 끝없는 재 작성 루프에 빠지게했습니다. 그때 나는이 시도 http://domain.com/arizona?state=arizona

: 나에게 끝없는 재 작성 루프를 제공하고이 URL에 저를 필요

RewriteCond %{QUERY_STRING} state=arizona [NC] 
RewriteRule .* http://domain.com/arizona [R=301,L] 
#older rewrite rule that passes query string based on URL: 
RewriteRule ^([A-Za-z-]+)$ index.php?state=$1 [L] 

: 이것은 내가 루프에 갇혀지고있는 지금 무엇을 가지고

RewriteRule .* http://domain.com/arizona? [R=301,L] 

URL에서 쿼리 문자열을 제거했지만 여전히 루프를 만듭니다.

답변

0

RewriteCond %{REQUEST_URI} ^/\?state=arizona$ [NC]

REQUEST_URI가 끝나는

RewriteCond %{QUERY_STRING} state=arizona [NC]

되어야 하는가? 토큰.

+0

그 중 하나가 작동하지 않습니다, 그때 나는 재 작성 루프에 들어간다. – meeble

+0

RewriteRule^([a-z _] +) $ index.php? state = $ 1에'$ {1-L [ [L]'. index.php가 일치하지 않아 리다이렉션되지 않습니다. – Wige

+0

"도트"문자가 문자 클래스 [\ w-]와 어떻게 일치합니까? 어쨌든, 나는 위의 그것을 변경했지만 여전히 동일한 루프 있습니다. – meeble

1

좋아, 추가 2한다 RewriteCond가 마침내 그것을 고정 - 올바르게 재 작성하지 않고 루프 :

# redirect dynamic URL: ?state=arizona 
RewriteCond %{QUERY_STRING} state=arizona [NC] 
RewriteCond %{REQUEST_URI} ^/$ [NC] 
RewriteRule .* http://domain.com/arizona? [R=301,L] 
# older rewrite rule that passes query string based on URL: 
RewriteRule ^([A-Za-z-]+)$ index.php?state=$1 [L] 

을 그리고 여기에 코드가 어떤 상태 값에 대해 작동하도록입니다뿐만 아니라 애리조나 :

RewriteCond %{REQUEST_URI} ^/$ [NC] 
RewriteCond %{QUERY_STRING} ^state=([A-Za-z-]+)$ [NC] 
RewriteRule .* http://domain.com/%1? [R=301,L] 
관련 문제