2012-11-20 8 views
1

mod_rewrite를 사용하여 다른 URL을 제공하려고 시도하고 있지만 무엇이든지 시도해 보는 것은 효과가 없습니다..htaccess에서 URL 재 작성

URL의 예는 http://www.site.com/country/tours/dynamic-part/?&city=new-york,los-angeles

것 그리고 난에 htaccess로 사용하여 URL을 변경하려고 :

http://www.site.com/country/tours/dynamic-part/new-york,los-angeles

RewriteEngine on 
RewriteBase/

RewriteCond %{QUERY_STRING} (^|&)city=([^&]*)(&|$) 
RewriteRule ^country\/tours\/([a-zA-Z0-9]*)\/.+city=([^\/]*)$ http://www.site.com/country/tours/$1/$2 [L,R=301] 

RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ /index.php/$1 [L] 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

어떤 아이디어? 그래도 난 더 이상없는 듯하지만/

답변

2

는 RewriteRule의가 쿼리 문자열과 일치 http://httpd.apache.org/docs/current/mod/mod_rewrite.html#what_is_matched

그래서 규칙의 .+city 일부가 일치하지 않습니다 참조하지 않습니다.

이 상점 작동합니다 ...

RewriteCond %{QUERY_STRING} (^|&)city=([^&]*)(&|$) 
RewriteRule ^country\/tours\/([a-zA-Z0-9]*)\/ http://www.site.com/country/tours/$1/%2 [L,R=301] 

는 subsitution한다 RewriteCond 패턴 백 referenecs를 읽을 수 있습니다.

+0

내 .htaccess (내 수정 한 것처럼 500 내부 서버 오류를 반환하지 않습니다) 넣어 있지만 도시 매개 변수를 제거하지 않습니다. 내 htaccess를 테스트하기 위해 http://htaccess.madewithlove.be/를 사용하고 있습니다. – GeorgeKaf

+0

오류 로그를 점검하여 파일에 대한 나쁨을 찾으십시오. 그리고 그 사이트가 신뢰할 만한지 어떻게 알 수 있습니까? 또 다른 흥미로운 점은 '동적 부분'예제에 하이픈이 포함되어 있지만 정규 표현식에 포함되어 있지 않습니다. qsdiscard를 원할 수도 있습니다. – barryhunter

+0

감사의 말씀 드리겠습니다. – GeorgeKaf