301 리디렉션과 충돌하는 수제 URL 단축기 리디렉션


11

고전적인 ASP를 사용하여 원래 작성된 웹 사이트가 있습니다. 약 1 년 전에 PHP로 다시 작성되었습니다. 이로 인해 파일 확장자가 변경되고 일부 페이지가 웹 사이트 내 새 위치로 이동되었습니다. 당연히 우리는 기존 URL에서 새 URL로 301 리디렉션을 수행하여 사용자와 검색 엔진이 새로운 위치를 찾을 수 있도록했습니다. 이것은 잘 작동합니다.

또한 사이트 소유자가 URL에 포함 된 Google 웹 로그 분석 캠페인 추적 변수를 사용하여 페이지로 리디렉션되는 작은 URL을 만들어 캠페인을 추적하고 실적을 확인할 수있는 도구를 만들었습니다.

내가 가진 문제는 캠페인 추적 규칙이 301 리디렉션과 충돌하여 리디렉션이 전혀 작동하지 않는 것입니다.

캠페인 추적 코드는 다음과 같습니다.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

보시다시피 파일이 존재하는지 확인하고 파일이 없으면 추적 스크립트 (tracking.php)로 리디렉션됩니다. 추적 스크립트는 추적 코드를 가져 와서 쿼리에서 Google 웹 로그 분석 캠페인 코드를 사용하여 적절한 URL로 리디렉션합니다 끈.

이 코드로 인해 다음과 같은 규칙이 실패합니다.

redirect 301 /about.asp /about.php
redirect 301 /capabilities.asp /capabilities.php
redirect 301 /capacitors.asp /capacitors.php

추적 규칙에서 "파일을 찾을 수없는 경우 tracking.php로 리디렉션"과 같이 작동하지 않는 것이 좋습니다. 내가 필요한 것은 301 리디렉션이 먼저 실행되고 일치하는 것이 없으면 추적 스크립트로 리디렉션하는 것입니다. 추적 규칙을 301 리디렉션 아래에 배치해도 결과는 변경되지 않습니다.

.htaccess를 통해이 작업을 수행 할 수 있습니까? 또는 캠페인을 찾을 수없는 경우 캠페인 ID가 실제로 리디렉션해야하는 이전 페이지인지 확인한 다음 301 리디렉션을 수행하도록 추적 스크립트를 수정해야합니까?

답변:


5

mod_alias리디렉션을 mod_rewrite지시문 으로 변환 해보십시오 .


편집 : 아래 예제는 이전 경로의 동일한 ASP 파일을 PHP 파일로 교체했다고 가정합니다.

RewriteEngine on

# *.asp -> *.php
RewriteRule (.*)\.asp$ /$1.php [R=301,L]

# tracking script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

... 또는 정규식 변수를 건너 뛰고 이전 URI 각각에 대한 명시 적 리디렉션을 설정할 수 있습니다.

RewriteRule about\.asp$ /about.php [R=301,L]
RewriteRule capabilities\.asp$ /capabilities.php [R=301,L]
RewriteRule capacitors\.asp$ /capacitors.php [R=301,L]

편집 # 2 : 다음은 대부분의 상황을 다루는 예입니다.

RewriteEngine on

# Changes to path + Query String Append
RewriteRule ^/path/to/old\.asp$ /path/to/new/about.php [R=301,L,QSA]

# *.asp -> *.php + Query String Append
RewriteRule ^(.*)\.asp$ $1.php [R=301,L,QSA]

# tracking script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

무슨 말인지 잘 모르겠습니다. 내 질문에 표시 한 내용을 기반으로 예를 들어 줄 수 있습니까?
John Conde

편집 해 주셔서 감사합니다. 이제 말이 되네요 마지막 문제는 경로가 변경된 파일로 무엇을해야할까요? 가능합니까? 아니면 너무 많이 묻고 있습니까?
John Conde

해당 파일에 대한 명시 적 리디렉션을 설정할 수 있습니다 (대부분의 경로가 변경된 경우 모든 파일에 대해 명시 적 리디렉션을 사용하여 구성을 유지 관리 할 수 ​​있음).
danlefree

[R=301,L]각 리디렉션 이후에 문제가 발생 했다고 생각 합니다. 시도해 보시면 어떻게되는지 알려 드리겠습니다.
존 콘데

*.asp -> *.php와일드 카드는 잘 작동합니다. 직접 전환이 아니고 쿼리 문자열이있는 페이지의 개별 규칙에 문제가 있습니다. 그러나 이것은 올바른 길로 보입니다. 해당 부분을 정리할 수 없으면 새로운 질문을 시작하겠습니다.
John Conde

-1

리디렉션을 되돌리고 원래 상태로 둡니다. 새 사이트를 이전 사이트로 리디렉션하십시오. OLD 사이트는 이미 백 링크, 웹 사이트 연령 및 SEO의 혜택을보고있을 것입니다. 더 낮은 페이지 순위를 가진 최신 사이트로 교체하는 것만 잃어 버리는 것은 부끄러운 일입니다. Google은 리디렉션을 처벌합니다. 귀하의 NEW 사이트에는 아직 SEO가 없으므로 해당 사이트에서 리디렉션을 사용하는 것이 좋습니다. :)


나는 회귀가 좋은 해결책이라고 생각하지 않습니다. 원래 사이트는 거의 모든 방법으로 제대로 수행되지 않았습니다. 우리는 사이트를 더 빠르고, 더 유용하고, 액세스 가능하며, 구성하고 유지 관리 할 수있게 만들었습니다. 그들은 틈새 사이트이기 때문에 리디렉션에서 아무것도 잃지 않을 것입니다. 왜냐하면 틈새 사이트이고 시작할 링크가 거의 없으며 대부분 리디렉션이 필요없는 홈페이지로 이동했습니다. 그래서 우리는 아무것도 얻지 못하고 많이 잃어 버렸기 때문에 오래된 사이트로 돌아가고 싶지 않습니다.
John Conde

참고로 Google은 리디렉션에 대해 처벌하지 않습니다. 리디렉션이 가진 유일한 문제는 너무 깊게 연결되어 있으면 추적을 멈추고 301을 수행 할 때 일부 PR이 손실되지만 금액이 사소하고 전혀하지 않는 대안에 비해 가치가 있다는 것입니다.
John Conde
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.