0

TO にリダイレクトする URL には、FROM にリダイレクトする URL よりも多くの情報が含まれているため、ある種のリダイレクトの中間ページを作成しようとしています。完全なドメイン (現在はreachchallenges.infectionist.com) にリダイレクトするために、htaccess ファイルを含む短いドメイン (hrci.me) を使用しています。例は次のとおりです。

hrci.me/ch123

パス ch123 には、チャレンジ リンク (ch) であることを知らせる識別子が含まれており、123 はチャレンジ ID です。各課題にはタイトルがあり、SEO の目的で URL の末尾に追加するのが好きです。この例の URL は次の場所にリダイレクトされます。

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

「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

すべての受信リクエストを長いドメインに転送するルールは、 /ch* リクエストのより具体的なルールよりも .htaccess ファイルの上位にあるようです。より具体的なルールをより一般的なルールの前に置いてみてください。

于 2012-05-03T01:39:57.033 に答える