고전적인 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 리디렉션을 수행하도록 추적 스크립트를 수정해야합니까?