2
自制网址缩短程序重定向与301重定向冲突
我有一个最初使用经典ASP构建的网站。大约一年前,它已用PHP重写。这导致文件扩展名发生更改,某些页面被移至网站中的新位置。自然地,我们进行了301次从旧URL到新URL的重定向,以便他们的用户和搜索引擎可以找到他们的新位置。这很好。 我们还为他们构建了一个工具,该工具使网站所有者可以创建自己的微型URL,该URL会重定向到页面中包含URL中包含的Google Analytics(分析)广告系列跟踪变量,以便他们可以跟踪广告系列并查看其效果。 我遇到的问题是广告系列跟踪规则与301重定向冲突,并完全阻止了重定向。 这是广告系列跟踪代码: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L] 如您所见,它会检查文件是否存在以及是否不存在,它会重定向到跟踪脚本(tracking.php),然后该脚本将获取跟踪代码并使用查询中的Google Analytics(分析)广告系列代码重定向到正确的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重定向?