2010-12-20 4 views
0

예 1에서 예제 2의 URL을 mod_rewrite를 사용하지만 성공하지 못하게하려고했습니다. 나는 godaddy를 사용하고있다.다른 mod 재 작성 질문

예 1

http://www.example.com/categories/details.php?cat=fruit 

예 2

http://www.example.com/categories/fruit/ 

여기 내 카테고리 폴더에 내 모드 재 작성 코드입니다.

Options +FollowSymLinks 
Options -MultiViews 
RewriteEngine on 
RewriteBase /categories/ 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/categories/$1 [R=301,L] 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php(.*)\ HTTP/ [NC] 
RewriteRule ^index\.php(.*)$ http://www.example.com/categories/$1 [R=301,L] 

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]*)$ 
RewriteRule ^details\.php$ http://www.example.com/categories/%1.php [R=302,L] 

답변

0

대신 사용해보십시오.

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]+) 
RewriteRule ^categories\/details\.php$ http://www.example.com/categories/%1 [R=302,L] 

이 :

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]+) 

쿼리와 일치해야합니다. 그래서 그것은 쿼리의 시작 부분에 고양이를 찾아서 var 뒤에있는 cat 뒤에 그룹을 매치시켜야합니다. 이제 하위 카테고리도 일치시킬 수 있습니다. 는

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]+)\&sub1=([a-zA-Z0-9]+) 
RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]+)\&sub1=([a-zA-Z0-9]+)\&sub2=([a-zA-Z0-9]+) 

같은 것을 할 수있는 여러 사람과 일치합니다 그리고 당신은 당신의 변수로 % 1, % 2, % 3을 사용할 수 있습니다.

이 :

RewriteRule ^categories\/details\.php$ http://www.example.com/categories/%1 [R=302,L] 

전체 URL을 뺀 도메인을 일치합니다. 그리고 % 1을 (를) 사용하여 다시 쓰기 그룹에서 그룹을 얻습니다.

내가 정규식 아주 좋은 아니에요 =============== OLD ===============하지만^선의 시작과 일치합니다. 그래서 이것을 시험해보십시오.

^categories\/details\.php\?cat=(.*)$ 

Then you will need to use http://www.example.com/categories/$1 

내가 정규식을 설명해 주어야 할 경우 알려주십시오. 이것은 내가 그것을 설명 할 수있을만큼 충분히 간단하다. 이 부분을 대체 할 수

: 나는 정확히 mod_rewrite는 작품, 그래서 내가 당신에게한다 RewriteCond 사용하여 잘못된 정보를 제공하지 않으려는 어떻게 기억할 수

RewriteRule ^categories\/details\.php\?cat=(.*)$ http://www.example.com/categories/$1 

:와

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]*)$ 
RewriteRule ^details\.php$ http://www.example.com/categories/%1.php [R=302,L] 

.

이전에 사용했던 것을 사용하십시오. 카테고리를 추가하십시오. 또한

RewriteCond %{QUERY_STRING} ^cat=([a-zA-Z0-9]*)$ 
RewriteRule ^categories\/details\.php$ http://www.example.com/categories/%1 [R=302,L] 

메모 :

아마 + 대신 *의뿐만 아니라 사용할 수 있습니다. ? 그래서^고양이 = ([A-ZA는-Z0-9] +) $

이 같은 시도 :이 코드를 삽입하는 곳

RewriteCond %{QUERY_STRING} ^(.*&)?cat=([a-zA-Z0-9]+)$ 
RewriteRule ^categories\/details\.php$ http://www.example.com/categories/%2 [L] 
+0

를? – maximum

+0

나는 이것을 작동시킬 수 없었다? – maximum

+0

확인 메신저 http : //wiki.apache.org/httpd/RewriteQueryString이 게시물을 업데이트하여 제대로 작동하는지 확인하십시오. – Matt