0

URLで動的サブドメインを使用する必要があります。私のPHPアプリケーションはユーザーのアカウントを開きます。

ログイン画面のURLは

http://example.dev/app/login

ログイン後、ユーザーは次のセクションに移動します

http://example.dev/app/section/account_name=ram

私の現在のドメインはexample.devです

私の要件は、ドメイン名にアカウント名を含めることです。私のURLは次のようになります

http://ram.exmaple.dev/app/section

同様に、私のアカウント名がsundarの場合、私のURLは次のようになります。

http://sundar.example.dev/app/section

私はこれが.HTACCESSを使用して可能であることを知っています。これを試しましたが、正しく取得できません

RewriteCond%{HTTP_HOST} ^([az-] +)。example.dev $ [NC]

RewriteRule(。*)$ / app / section /?account_name =%1 [QSA]

上記は正しいですか?

重要なポイント:htaccessの最後に、1つのコントローラーファイルを呼び出す必要があります。

RewriteRule ^(。*)$ example_controller.php

4

1 に答える 1

1

example_controller.php にまったく変更を加えたくないということは理解しています。

PHP は元の URL に次のようにアクセスします: $_SERVER["REDIRECT_URL"]これには、「最後から 2 つ目の」要求アドレスではなく、元の要求アドレスが含まれます。

私が考えることができる唯一の解決策は、リバース プロキシです。.htaccessを使用して、目的の URL への独自のホストへのプロキシ リクエスト ([P] ディレクティブを使用) を作成できます。このようにして、PHP はその URL をREDIRECT_URLとして認識します。これは、それがリクエストの元の URL であるためです。

RewriteCond %{HTTP_HOST} ^([a-z-]+).example.dev$ [NC]
RewriteRule (.*)$ http://example.dev/app/section/?account_name=%1[PQSA]

RewriteRule ^(.*)$ example_controller.php

もちろん、mod_proxy を有効にする必要があります。P ディレクティブと QSA ディレクティブがどのように連携するのかよくわかりません。試してみてください。

于 2011-03-01T18:41:32.033 に答える