0

我正在尝试在各种页面之间创建一个重定向,因为我重定向到的 URL 包含的信息比我重定向 FROM 的 URL 更多。我正在使用带有 htaccess 文件的短域 (hrci.me) 来重定向到完整域(当前为reachchallenges.infectionist.com)。一个例子是:

hrci.me/ch123

路径 ch123 包含让我知道它是质询链接 (ch) 的标识符,而 123 是质询 ID。每个挑战都有一个标题,我喜欢将其附加到 URL 的末尾以用于 SEO。此示例 URL 将重定向到:

reachchallenge.infectionist.com/challenge/123/Challenge+Title

“挑战+标题”部分存储在数据库中,需要通过挑战 id 进行检索,因此我编写了一个简单的 PHP 脚本来执行此操作,然后自行处理重定向。我的 htaccess 规则如下所示:

RewriteRule ^ch([0-9]{1,4})(/)?$ redirhandler.php?chid=$1 [L]

因此,对 /ch123 的请求应该重定向到 redirhandler.php?chid=123,这将获得标题,然后重定向到位于 /challenge/123/Challenge+Title 的另一个域。问题是,短域设置为将所有传入请求转发到长域,保持原始路径(因此 hrci.me/something 将重定向到reachchallenges.infectionist.com/something),我发现之后htaccess 处理对 redirhandler.php 的重写,然后将其重定向到reachchallenges.infectionist.com/redirhandler.php ...

基本上,如果路径是 redirhandler.php,我需要它忽略任何进一步的重定向,从而允许 php 脚本处理重定向的其余部分。我在想 RewriteCond 是我可以做到这一点的方式,但我无法弄清楚。

4

1 回答 1

0

听起来您将所有传入请求转发到长域的规则在 .htaccess 文件中高于 /ch* 请求的更具体规则。尝试将更具体的规则放在更一般的规则之前。

于 2012-05-03T01:39:57.033 回答