2011-04-12 2 views
0

도와주세요, 내가 완전히 혼란이되었다 내 문제에 대한 해결책을 찾고 많은 시간 후mod_rewrite의 조건과 규칙 (혼란) 제발 도와

,이 경우 이전에 응답 한 그래서 내 appologies. 그래서 지금은 이전 URL에 다음과 같은 구문 분석하는 재 작성 규칙을 만든

http://www.mydomain.com/news/dentistry_dental/article_detail.php?article=2968&title=redefining-oral-hygiene-intervention

내가 내 URL을 청소하고 있습니다 :

http://www.mydomain.com/dental_news/2968/Redefining-oral-hygiene-intervention

나는 그래서 현재의 URL이

.htaccess 파일에서 사용 된 규칙은 다음과 같습니다.

RewriteRule ^dental_news/([^/]*)/([^/]*)$ /news/dentistry_dental/article_detail.php?article=$1&title=$2 [L] 

이것은 예상대로 작동합니다 .. 나는 또한 새로운 URL을 301 리디렉션으로 가리 키도록 OLD URL (많은 검색 엔진에서 인덱싱 됨)이 필요합니다.

나는 많은 것들을 시도했지만, 아직 나는 오류를 얻지 못했고, 나는 그것의 반복 오류를 추정한다.

아무도 반복하지 않고 2 방향 리디렉션을 달성 할 수있는 방법이 있습니까? 어떤 도움을 크게

편집을 이해할 수있을 것이다

아래의 대답으로 볼 수 위의 문제는 그러나 지금은 다른 쿼리를 가지고, 해결되었습니다이 이해 날 도움이 될 것입니다 내가 :)

희망에가는 무슨 난 내가 배출량이 301

www.mydomain.com/dental_news/에로 리디렉션 할 또 다른 URL www.mydomain.com/news/dentistry_dental/index.php이 이 일을하기 위해 아래 답변에서 코드를 다시 작성했지만 실패한 것입니다. 나는 생각하는 모든 것을 이해하지 못했습니다.

어떤 도움도 큰 :)

감사 M

답변

0

는 다음을 시도합니다. 첫 번째 조건은 리디렉션 루프에서 사용자를 보호해야합니다 (/dental_news으로 시작하지 않는 요청 만 일치 시킴) %1%2은 이전 RewriteCond의 해당 정규식 그룹과 일치하며 RewriteRule의 후행 ?은 리디렉션시 쿼리 문자열을 제거합니다 .

RewriteCond %{REQUEST_URI} !^\/dental_news\/ 
RewriteCond %{QUERY_STRING} article=([0-9]*)&title=(.*)$ 
RewriteRule (.*) /dental_news/%1/%2? [L,R=301] 

희망이 도움이

편집 :. 나는 $ 012,356의 때까지 일치하는 두 번째 RewriteCond의 마지막 그룹을 변경인 경우 &1 인 경우 RewriteCond의 끝을 ([^&]*) 그룹으로 변경할 수 있습니다.

RewriteCond %{REQUEST_URI} !^\/dental_news\/ 
RewriteCond %{QUERY_STRING} article=([0-9]*)&title=([^$]*)$ 
RewriteRule (.*) /dental_news/%1/%2? [L,R=301] 

편집 : 당신의 도움에 대한

RewriteEngine On 

RewriteRule ^dental_news/([^/]*)/([^/]*)$ news/dentistry_dental/article_detail.php?article=$1&title=$2&redirect [L] 

RewriteCond %{REQUEST_URI} !^/dental_news/ 
RewriteCond %{QUERY_STRING} article=([0-9]*)&title=([^&]*)$ 
RewriteRule (.*) /dental_news/%1/%2? [L,R=301] 
+0

@clmarquart 많은 감사,하지만 내가 어떻게 다른 작업을 수행 내 다른 규칙과 함께이을 사용 벌어 좋은 deffinately 무언가가 방법 라운드? 마치 .htaccess에 이것을 추가하면 계속 진행되는 루프가 있습니다. 내 규칙을 삭제하면 리디렉션이 작동하지만 404 규칙이 삭제됩니다. 희망이 있습니다. 다시 도움을 청합니다. – madmatuk

+0

원본 'RewriteRule'에서'$ fr' 또는 '& fr'으로 작성된 다시 쓰기의 마지막 매개 변수입니까? 두 경우 모두 처음 알지 못했고 원래 해결 방법을 업데이트하여 문제를 해결합니다. – clmarquart

+0

$ fr isnt는 전혀 존재하지 않아 PHP에서 리다이렉트하려고했는데 (PHP는 헤더 문제로 인해 가능하지 않음) 제거되었으므로 $ fr = 1은 내 orignal post에서 삭제해야합니다. 지금 :) – madmatuk