1

追加情報のビット...

PHPBBには、自分のページで外部からログインフォームを使用している場合でも、以前に表示していたページにログインした後にリダイレクトする方法があります。しかし、彼らはそれがあなた自身のドメイン内の相対的なパスであるべきだと決定しました。forum.mydomain.comのようなサブドメインにフォーラムがある場合、これは必ずしも素晴らしいことではありません...

彼らのウィキからの例:<input type="hidden" name="redirect" value="./somefile.html" />

サブドメインの問題を回避するために、フロントページのリダイレクトの表示をサブドメインに追加することにしました。<input type="hidden" name="redirect" value="./redirect/frontpagenews.php" />

したがって、ページのログインフォームを使用するとhttp://mysite.com/frontpagenews.php、フォーラムのリダイレクトURLは次のようになりますforum.mysite.com/redirect/frontpagenews.php(これは機能し、フォーラムはログイン後に戻るためにこのリンクを作成します)。必要なのは、これを検出するための書き換えルールだけです。これにより、実際にhttp://mysite.com/frontpagenews.php

質問...

forum.mysite.com/redirect/*anything*からに行くにはどうすればよいmysite.com/*anything*ですか?

私はしばらくこれに取り組んできましたが、機能しない場合を除いて、以下のコードは機能するはずです。チェックされる最初のルールであれば問題ないはずなので、forum.mysite.comのhtaccessファイルにある他のフォーラム書き換えルールの上に配置しました。

RewriteCond %{HTTP_HOST} ^forum\.mysite\.com/redirect/(.*)$ [NC]
RewriteRule (.*) http://mysite\.com/$1 [QSA,L,NC]

これも条件として試しましたが、喜びはありませんでした。

RewriteCond %{REQUEST_URI} /redirect/(.*)$ [NC]
4

1 に答える 1

0

HTTP_HOSTは、パスではなく、ホスト名とのみ一致します。パスはRewriteRuleの一部である必要があります。編集している.htaccessファイルがforum.mysite.comルートにあると仮定すると(forum.mysite.com/.htaccessに相当)、次のようになります。

RewriteCond %{HTTP_HOST} ^forum\.mysite\.com$ [NC]
RewriteRule ^redirect/(.+)$ http://mysite.com/$1 [L,NC,R]

QSAクエリ文字列はとにかく追加されるため、ルール括弧内は必要ありません(?たとえば、ターゲットにが含まれている場合を除くhttp://mysite.com/$1?p=1)。

これにより、ブラウザがからforum.mysite.com/redirect/*anything*にリダイレクトされますmysite.com/*anything*

于 2011-11-08T22:39:05.577 に答える