2011-09-29 7 views
0

도움이되는 사람이 조금 있습니다.htaccess 재 작성 규칙, 이전 URL이 새

내가 현재 갖고있는 것은 (다른 유형의 URL에 사용 된 일부 코드를 기반으로합니다.) 어떤 쿼리 문자열이 내가 지금까지에있을 것입니다 이후

포함되지와

나는 첫 번째 URL이 두 번째로 리디렉션합니다.

RewriteRule ^(page.php?id=missionstatement+)/?$ http://example.com/why/mission-statement [R=301,L] 
RewriteRule ^(page.php?id=ofsted+)/?$ http://example.com/how/ofsted-report [R=301,L] 
RewriteRule ^(page.php?id=governingbody+)/?$ http://example.com/governors [R=301,L] 
+0

그건 틀렸어. RewriteRule이 그런 쿼리 문자열에서는 작동하지 않아. URL과 URL (URL =>에서 URL로)이 어떻게 리디렉션되어야하는지 보여 주시겠습니까?이 규칙 중 일부를 "문자"로 입력하면 LOT를 혼란스럽게합니다. – LazyOne

+0

http://example.com/page.php?id=whatever => http://example.com/how/something – Willans

답변

2

가있다 규칙 (1 URL로 리디렉션됩니다) :

RewriteCond %{QUERY_STRING} ^id=whatever 
RewriteRule ^page\.php$ http://%{HTTP_HOST}/how/somehow? [R=301,L] 
  1. 목적이 규칙은 웹 사이트의 루트 폴더에 htaccess로 배치 할 수 있습니다. 다른 곳에 배치하면 약간의 작은 조정이 필요할 수 있습니다.

  2. 나는 %{HTTP_HOST}을 사용했습니다. 요청한 URL과 동일한 도메인으로 리디렉션됩니다. 도메인 이름이 다른 경우 정확한 도메인 이름으로 대체하십시오.

  3. 새 URL 끝에 ?은 기존 쿼리 문자열을 제거합니다.

+0

Woop. 설명 주셔서 감사합니다. – Willans

0

아유이!

이에게 소용돌이 보내기 내가 어떤 웹 dev에 수행 한 이후 시간이 지났는데

#check mod_rewrite is enabled 
<IfModule mod_rewrite.c> 

#enable mod rewrite 
RewriteEngine On 

#set working directory 
RewriteBase/

#force trailing slash 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ $1/ [R=301,L] 

#bootstrap index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^page.php\?id=(.*)$ http://www.willans.com/page.php/$1 [R=310,L] 

#end mod rewrite check 
</IfModule> 

을, 그러나 그것은 올바른 방향으로 밀어 이상이어야한다) 여기