문제

다음 위치에 PHP5/Zend Framework 1.8.1 웹 사이트가 있습니다.

http://www.example.com/foo

짜증나게도 여전히 Google 색인에 의해 관리되고 있는 이 사이트의 이전 버전은 다음 위치에 있습니다.

http://www.example.com/foo/DEFAULT.ASP

그래서 많은 분들이 위의 링크를 요청하다가 막다른 골목에 부딪히고 있습니다.

내 생각엔 이 문제를 해결하는 방법은 301 리디렉션을 실행하여 그를 새 사이트로 이동시키는 것입니다.이를 수행하는 두 가지 방법이 마음에 떠오릅니다.

  1. 제가 생각한 첫 번째 방법은 .htaccess에 다시 쓰기 규칙을 추가하는 것이었습니다.우리 사이트 구현은 PHP5/Zend Framework 1.8.1이므로 .htaccess에 다음과 같은 기존 재작성 규칙이 있습니다(Zend Framework MVC 요구 사항에 따라).

    RewriteRule !\.(js|ico|gif|jpg|png|css|jpeg)$ index.php
    

    mod_rewrite 멍청한 놈으로서 나는 약간의 인터넷 검색을 수행하고 리디렉션을 처리하기 위해 다음을 생각해냈습니다.

    RewriteCond %{HTTP_HOST} ^/foo/DEFAULT.ASP
    RewriteRule (.*) http://example.com/foo$1 [R=301,L]
    

    해당 줄을 .htaccess에 추가했지만 작동하지 않습니다.

  2. 내가 생각한 두 번째 방법은 Zend_Router_Route_Static 다음과 같이:

    $router = $frontController->getRouter();
    $route = new Zend_Controller_Router_Route_Static('foo/DEFAULT.ASP', array('controller' => 'foo', 'action' => 'index'));
    $router->addRoute('foo', $route);
    

    이렇게 하면 올바른 페이지로 리디렉션되지만 301 헤더를 설정하는 방법도 모르겠습니다. 게다가 내 페이지에 해당 코드 줄이 있는 것도 꽤 멋스럽지 않습니다. bootstrap.php

이 상황을 처리하는 방법에 대해 조언을 줄 수 있는 사람이 있습니까?나는 다음 중 전부 또는 일부를 알고 싶습니다.

  1. 다시 쓰기 규칙을 작동시키는 방법
  2. '301'을 수행하는 방법Zend_Controller_Router_Route 가능하다면.
  3. 내가 놓친 또 다른 방법이 있습니까?
  4. 어느 것이 더 좋은 방법이며 그 이유는 무엇입니까?
  5. 구글은 왜 이것을 알아내지 못하는 걸까요?거의 반년이 지났습니다.
도움이 되었습니까?

해결책

이렇게 하면 작동합니다(Zend 규칙 앞에 배치해야 합니다).

RewriteRule ^foo/DEFAULT.ASP /foo [R=301,L]

Google이 왜 이를 파악하지 못하는지 잘 모르겠습니다. 올바른 404 상태 코드를 제공하고 있습니까?헤더를 보면 확인할 수 있습니다. Firefox에서는 제가 사용하는 라이브 HTTP 헤더.

다른 팁

최근에 비슷한 문제를 추가하여 해결했습니다.

AddType application/x-httpd-php .asp

.htaccess 파일에 추가하면 서버가 PHP로 .asp 파일을 실행하게 됩니다.

그런 다음 헤더( '위치:/' 등)을 사용하여 Google이 찾고 있던 항목을 대체합니다.리디렉션하기 전에 새 URL로 변환해야 하는 복잡한 매개변수가 포함된 몇 가지 다른 .asp 파일이 있었고 어떤 경우에는 데이터베이스 조회가 필요했기 때문에 모든 것을 PHP로 작성하여 다른 부분의 포함 파일을 사용할 수 있어서 편리했습니다. 프로젝트의.

Redirect permanent /foo/DEFAULT.ASP /foo

귀하가 문제를 해결한 것으로 보이며 이는 귀하의 문제에 대한 좋은 해결책은 아니지만 귀하의 질문으로 인해 다른 사람들이 이 스레드에 관심을 갖게 된 경우 유용할 수 있는 또 다른 리소스는 다음과 같습니다.

http://www.refreshinglyblue.com/2008/10/28/zend-framework-redirect-the-easy-way/

그는 내부 URL을 리디렉션하기 위해 "Redirector Zend Controller Action Helper"를 제안하고 있습니다.

추신누구든지 _redirect를 사용하는 경우 기본값은 302이므로 301 리디렉션 코드(원하는 경우)를 전달해야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top