2013-09-25 5 views
0

온라인 쇼핑 카트가 루트에 설치되어 있으므로 CMS ito 루트를 설치하고 장바구니를 하위 도메인으로 이동하기로 결정했습니다..htaccess가 % {REQUEST_FILENAME}이 (가) 하위 도메인으로 리디렉션 됨

그래서 우리는이

  1. domain.com

은 우리가 달성하려고하는 것은 다음과 같습니다 URL을 리디렉션하는 것입니다 shop.domain.com :

domain.com/product_info.php?products_id=X 

받는 사람 :

shop.domain.com/product_info.php?products_id=X 

여기서 X의 값도 변경해야합니다.

%{REQUEST_FILENAME}과 관련이 있고 지금까지 우리가 .htaccess에있는 것을 읽었습니다. 실제로는 모든 것을 동일한 파일 이름으로 리디렉션하지만 와일드 카드 리디렉션이었습니다. X 값도 변경됩니다.

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^domain\.co.uk$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain\.co.uk$ 
RewriteRule ^product_info\.php\/?(.*)$ "http\:\/\/sub.domain\.co.uk\/product_info\.php\?products_id\=1$1" [R=301,L] 
+0

이 경우 URL은'domain.com/product_info.php? products_id = 10' 대상 URL은 무엇입니까? 'http : //shop.domain.com/product_info.php? products_id = 10'입니까 ?? – anubhava

+0

@anubhava 나는 그/그녀가 X가 고정 값이 아니다라고 말하려고 생각했다. 그 이유는 변할 것이다. – Prix

+0

@Prix : 아마 맞 겠지만 OP의 코드에서'products_id \ = 1 $ 1'은 완전히 혼란 스러웠다 : P – anubhava

답변

1

QSA 플래그가 자동으로 쿼리 문자열을 전달합니다 도메인의 루트 폴더에이 .htaccess을 넣어 : 하위 도메인은 도메인의 동일한 루트 폴더에 있습니다 경우

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

RewriteRule ^product_info\.php$ http://shop.domain.co.uk/product_info.php [R=301,QSA,L] 

, 다음이를 사용

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.uk$ [NC] 
RewriteRule ^product_info\.php$ http://shop.domain.co.uk/product_info.php [R=301,QSA,L] 

을 그래서 기본적으로 위의 규칙 중 하나와, 만약 사용자 액세스 :

domain.com/product_info.php?products_id=4 
domain.com/product_info.php?products_id=3 
domain.com/product_info.php?products_id=2 
domain.com/product_info.php?products_id=1 
그것은로 리디렉션됩니다

:

shop.domain.com/product_info.php?products_id=4 
shop.domain.com/product_info.php?products_id=3 
shop.domain.com/product_info.php?products_id=2 
shop.domain.com/product_info.php?products_id=1 

당신은 사실이 당신을 어떻게 할 것입니다 ID를 변경해야하는 경우 :

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} products_id=([^&]+) [NC] 
RewriteRule ^product_info\.php$ http://shop.domain.co.uk/product_info.php?products_id=1%1 [R=301,L] 

을 그리고 도메인의 경우 하위 도메인이 같은 루트 폴더에 있으면 다음과 같이 표시됩니다.

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.uk$ [NC] 
RewriteCond %{QUERY_STRING} products_id=([^&]+) [NC] 
RewriteRule ^product_info\.php$ http://shop.domain.co.uk/product_info.php?products_id=1%1 [R=301,L] 

기본적으로 %{QUERY_STRING}을 사용하여 쿼리 문자열에서 데이터를 가져와야합니다. 2 개 위의 규칙 중 하나와

그래서

, 사용자 액세스의 경우 :

domain.com/product_info.php?products_id=4 
domain.com/product_info.php?products_id=3 
domain.com/product_info.php?products_id=2 
domain.com/product_info.php?products_id=1 
그것은로 리디렉션됩니다

:

shop.domain.com/product_info.php?products_id=14 
shop.domain.com/product_info.php?products_id=13 
shop.domain.com/product_info.php?products_id=12 
shop.domain.com/product_info.php?products_id=11 
관련 문제