2013-07-08 3 views
1

나는 ASP 위치를 대체하는 PHP 위치가있다, 그래서 경로 구조는 다르다.아파치에서 디렉토리를 제거하십시오 mod_rewrite

URL에 http://apache.site/Cartv3/Details.asp &을 다른 위치로 리디렉션해야합니다. 해당 URL 조각과 일치하는 올바른 구문은 무엇입니까?

난 이미 여기에 문제는 별도의 RewriteCond에 의해 수행되어야하는 쿼리 문자열을 일치하려고하는 것입니다

RewriteCond %{REQUEST_URI} CartV3/results1.asp?Category=60 
RewriteRule ^(.*)$ home-study/A-Levels/1/page-1 [R=301,L] 

RewriteRule ^CartV3/Details\.asp?ProductID=1004 home-study/A-Levels/1/page-1 [R=301,L] 

답변

1

mod_rewrite에 대해 더 자세히 읽으십시오. RewriteRule이 쿼리 문자열과 일치하지 않는다는 것을 기억하십시오. 당신이 그것을 잘 작동하는지 확인 R=301R=302를 교체하면

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} ^Category=60$ [NC] 
RewriteRule ^CartV3/results1\.asp$ /home-study/A-Levels/1/page-1? [R=302,L,NC] 

: 당신의 요구가 다시 작성하려고 시도. mod_rewrite 규칙을 테스트하는 동안 R=301 (영구 리디렉션)을 사용하지 마십시오.

page-1 이후의 PS : ?은 원래 쿼리 문자열을 제거하기위한 특수 mod_rewrite 구문입니다. 다시 작성한 URL에 원래의 쿼리 문자열을 유지하려면 끝에 ?을 가져옵니다.

0

을 시도했습니다. 당신이 구체적으로 일치 "분류 = 60"을 원한다면, 당신은 상태로 추가 할 수 있습니다 :

RewriteCond %{QUERY_STRING} Category=60 
RewriteCond %{REQUEST_URI} /CartV3/results1.asp 
RewriteRule .* home-study/A-Levels/1/page-1? 

http://example.com/CartV3/results1.asp?Category=60 일치 리디렉션합니다. 규칙의 마지막에있는 ?은 "? Category = 60"이 결과 URI가되는 것을 중지합니다.

쿼리 문자열의 값을 신경 쓰지 않으면 첫 번째 조건을 제거 할 수 있습니다.

관련 문제