2013-07-01 2 views
0

는 다음과 같은 가정 새로운 URL로 리디렉션 :제거 URL에서 패턴 (301)은

mywebsite.com/searches/index/page:x where x is an integer. 

내가 CakePHP를 기반으로 인덱스/제거 및

mywebsite.com/searches/page:x 

내 웹 응용 프로그램으로 리디렉션 할을하고, Webroot 디렉토리의 .htaccess 파일에 다음 행을 추가했지만 결과가 나타나지 않습니다.

RewriteRule ^(.*)/searches/index/(.*)$ searches/$1 [R=301,L] 

정확한 .htaccess 코드를 알아야합니다.

그러나 Google 웹 마스터 도구가 많은 소프트 401 오류가 있다고 말했기 때문에이 질문을했습니다. 내 응용 프로그램 경로에서 나는 routes.php에 다음 행으로 인덱스 페이지를 호출들을 생략 :

Router::connect('/searches/index/*', array('controller' => 'error','action'=>'e404')); 
Router::connect('/searches', array('controller' => 'searches', 'action' => 'index','page' => 1)); 
Router::connect('/searches/*', array('controller' => 'searches', 'action' => 'index')); 

그래서 CakePHP의에서 Google 문제를 극복하기 위해 다른 해결책이 있다면, 나는 그것을 알고 이해할 수있을 것이다.

내 케이크 버전은 1.2.11입니다.

답변

1

규칙의 시작 부분에있는 그룹은 규칙이 mywebsite.com/searches/index/page:x과 같은 URI와 mywebsite.com/foobar/searches/index/page:x 같은 URI와 일치하도록합니다. 이것이 당신이 원하는 것처럼 보이지 않습니다.

대체 패턴의 첫 번째 그룹에 backreference을 사용하고 있기 때문에 새로운 URL에 page:x 부분이 절대 포함되지 않습니다. 대신 과 같은 URI는 mywebsite.com/searches으로, mywebsite.com/foobar/searches/index/page:x 같은 URI는 mywebsite.com/searches/foobar으로 리디렉션됩니다.

나는 규칙이 더 같이해야한다고 생각 : 떨어져 첫 번째 그룹을 제거에서, 나는 또한 옵션 패턴에 선도적 인 슬래시를했습니다

RewriteRule ^/?searches/index/(.*)$ /searches/$1 [R=301,L] 

참고가 forbidden with Apache 2.x, while it's necessary with Apache 1.x, 난 후로 교체 부분에 선행 슬래시를 추가하여 루트로 리디렉션되는지 확인했습니다.

+0

투표가 다운 된 이유가 있습니까? 가능한 실수, 모호함 등을 교정 할 수 있도록 답변의 문제점을 파악하는 것이 좋을 것입니다. – ndm

+0

+1 투표로 필요한 문제에 답변합니다. – Termis