문제

나는 Joomla를 기반으로 전직 사이트를 WordPress로 옮겼습니다. 가져 오기는 잘 작동했지만 문제는 이전 링크가 더 이상 작동하지 않는다는 것입니다. 기사가 50 개 밖에 없기 때문에 각 게시물에 대한 규칙을 제시하는 것이 좋습니다 (.htaccess).

글쎄 ... 항상 당신이 원하는 것과 같지 않기 때문에 리디렉션은 전혀 작동하지 않습니다 :(

오래된 Joomla 링크는 다음과 같습니다.

http://site.com/index.php?option=com_content&task=view&id=49&Itemid=29
http://site.com/index.php?option=com_content&task=view&id=42&Itemid=29
http://site.com/index.php?option=com_content&task=view&id=68&Itemid=29

다음으로 번역해야합니다.

http://site.com/?p=23
http://site.com/?p=24
http://site.com/?p=25
  • 기본적으로 기존 링크와 새로운 링크 사이의 관계가 없으므로, 재 덜 끈이 도움이 될 것이라고 생각하지 않습니다.

  • 기존 사이트와 새 사이트는 모두 같은 도메인에 있습니다.

좋아, 문제는 내가 시도한 모든 규칙 (그리고 많은 시도를 시도했다!)은 아무도 효과가 없다는 것입니다. 소수의 경우 500 오류가 발생하지만 대부분 리디렉션이 작동하지 않았습니다.

그래서 여러분 중 누구라도 같은 문제가 있습니까? 나는 멋진 퍼머 링크를 원할 필요는 없지만 가능하다면 더 나을 것입니다. 문제는 오래된 URL에 백 링크가 많고 느슨하게하고 싶지 않다는 것입니다.

감사합니다.

도움이 되었습니까?

해결책

사이트를 WordPress로 전환하는 것이 비교적 새기이므로 오래된 Joomla를 사용하지 못하게하는 것이 있습니까? 이드는 WP 데이터베이스 테이블에 있습니까? 이를 통해 정규식을 상당히 쉽게 사용할 수 있습니다.

또 다른 옵션은 Joomla를 처리하는 별도의 PHP 스크립트를 만드는 것입니다! 그런 다음 URL은 WordPress를 리디렉션합니다. 따라서 Apache 구성에서 index.php? 옵션 = com_content & task = view urls, 'id'값을 찾은 다음 joomla의 ID 맵을 갖는 sodesscript.php로 리디렉션합니다. WordPress에. 이 스크립트는 헤더 ( '위치 :? p ='. $ id)를 사용하여 WordPress의 올바른 페이지로 리디렉션됩니다.

다른 팁

아이디어를위한 thnaks! 이것을 index.php (WordPres default)에 넣습니다.

if(isset($_GET['option'])) {
    if(is_numeric($_GET['id'])){
        header ('HTTP/1.1 301 Moved Permanently');
        header("Location: http://www.site.com/?p={$_GET['id']}");
        die();
    }else {
        die('Hacking attempt');
    }
}

그리고 ... 좋아요! :디

또 다른 옵션은 리디렉션 플러그인을 사용하여이를 수행하는 것입니다. 테마를 변경하거나 업데이트 할 때마다 솔루션이 나빠집니다.

나는 알려지지 않은 CMS와 Joomla와 매우 비슷한 문제가있었습니다. Apache에서 .htaccess로 그것을하려면 방법이 있지만, 이전 URL과 새 URL 사이에 절대적인 관계가 없다면 각 URL 쌍에 대해 두 줄을 작성해야합니다.

RewriteEngine On
# now the first Example
RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$
RewriteRule ^index\.php$ /?p=23 [R=301,L]
# Repeat last two lines for all your URLs

이런 종류의 새로운 URL이 있는지 확실하지 않습니다. 개인적으로 SEF URL이 더 나을 것입니다. https://example.com/path/to/new/page

당신이 할 수있는 것보다 이것을하고 싶다면, 당신은 그것을 추가해야합니까? 대상이 끝나면 이전 쿼리 문자열이 다음과 같은 새 대상에 추가됩니다. https://example.com/path/to/new/page?option=com_content&task=view&id=49&Itemid=29이 예제에 대해서는 다음과 같이 수행합니다.

RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$
RewriteRule ^index\.php$ /path/to/new/page? [R=301,L]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top