2010-04-21 4 views
1

회사의 새 웹 사이트를 만들었으며 이전 검색 엔진 결과를 모두 리디렉션하고 싶습니다. 꽤 많은 페이지가 있었고 그 중 대부분은 id를 사용하여 모든 이전 페이지를 다시 라우팅하는 대신 일반적인 것을 사용하고 싶습니다.Cakephp, 이전 Google 검색 결과를 새 홈페이지로 연결

Router::connect('/*', array('controller' => 'pages', 'action' => 'display', 'home')); 

그리고 routes.php 파일 [이 우선되기 때문에] 그래서 모든 요청 이전 경로 행동과 유효성을 검사하지 않는 것이의 맨 끝에 그것을 넣어 :

내 첫번째 생각은 그렇게하는 것이 었습니다 이것으로 true를 반환하고 홈페이지로 리디렉션합니다.

그러나 이것은 작동하지 않습니다.

라우터에서 다른 경로를 사용하면 성공적으로 리디렉션됩니다. 예를 들면 다음과 같습니다.

Router::connect('/*', array('controller' => 'projects', 'action' => 'browser')); 

잘 작동합니다.

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); 

    Router::connect('/company/*', array('controller' => 'articles', 'action' => 'view')); 

    Router::connect('/contact/*', array('controller' => 'contacts', 'action' => 'view')); 

    Router::connect('/lang/*', array('controller' => 'p28n', 'action' => 'change')); 

    Router::connect('/eng/*', array('controller' => 'p28n', 'action' => 'shuntRequest', 'lang' => 'eng')); 

    Router::connect('/gre/*', array('controller' => 'p28n', 'action' => 'shuntRequest', 'lang' => 'gre')); 


    Router::parseExtensions('xml'); 
+0

당신은/* 페이지에 연결할 때 :: 디스플레이를 어떤 일이 발생 하는가? –

+1

나는 아마도 htaccess를 정규식으로이 문제를 해결하고 301 –

+0

#Travis Leleu를 실행하면 "찾을 수 없음"메시지가 나타납니다. "찾을 수 없음 오류 : '/ asdasdf'요청한 주소가이 서버에서 발견되지 않았습니다." – ion

답변

2

더 큰 문제는 경로가 으로 리디렉션되지 않고 URL이 응답과 연결된다는 것입니다. 즉, 현재 유효하지 않은 URL이 유효한 페이지를 생성합니다. 당신이 성취하고자하는 것과 정확히 반대입니다.

유효하다고 사용 된 URL이 더 이상 존재하지 않는다고 방문자에게 알리고 싶습니다. 이 경우 적합한 HTTP 응답 코드 인 301 Moved Permanently을 발급하면됩니다. 이 작업을 수행하지 않으면 URL이 검색 엔진에서 계속 유효하게 표시되고 색인이 업데이트되지 않습니다.

$this->redirect('...', 301)을 발행 할 일부 컨트롤러 작업에 대한 경로를 통해 잘못된 URL을 모두 연결해야하거나 일부 .htaccess 규칙을 사용하여 리디렉션 할 수 있습니다. 어느 것을 사용할지는 리다이렉트의 복잡성에 달려 있지만 단순한 .htaccess mod_rewrite 규칙을 사용할 수는 있습니다. 충분한 예는 SO에있다

있습니다 https://stackoverflow.com/search?q=htaccess+301+redirect

3
: 누군가가 나에게 힌트를 줄 수 있다는 희망 [이 작기 때문에]가 사용되는 컨트롤러, 내 routes.php 파일 을 붙여있어 동작 표시 등

페이지 때 문제가 발생

cakePHP 라우트 파일에서 모든 것을 처리하는 대신 .htaccess 파일을 사용하여 301 페이지를 필요에 따라 리디렉션 할 것을 권장합니다.

당신이 제안한 routes.php 기반 솔루션에서 301 리디렉션이 출력되지 않기 때문에 위에서봤을 때 순위가 이전되지 않습니다.

관련 문제