
各ユーザーがサブドメインと独自のデータベースを持つシステムがあります。例:
usuarioa.system.com
usuariob.system.com
システムを閲覧中にサブディレクトリをナビゲーション バーに表示しておくために、次のルールを使用しました。
RewriteEngine on
RewriteCond% {HTTP_HOST} ^ usera.system.com $ [OR]
RewriteCond% {HTTP_HOST} ^ www.usera.system.com $
RewriteRule ^ (. *) $ http://www.system.com/access/$ 1? user = usera [P]
これは完璧に機能しています。PHP で $ _REQUEST を使用して正しいデータベースに直接接続しているからです。問題は、このルールが複数のパラメータを受け入れず、変更を加えるとエラー 403 が発生することです。そのため、PHP で一時的な解決策を作成しましたが、これ以上は使いたくありません。
list ($queryString, $id) = explode ("user =", $ _SERVER [' REQUEST_URI ']);
list ($id, $idUsu) = explode (".", $id);
ナビゲーション バーにサブディレクトリを保持したまま、htaccess 経由で 02 パラメータを直接渡すにはどうすればよいですか?
英語が下手で申し訳ありませんが、Bing翻訳を使用しています。
答え1
RewriteRule ^ (. *) $ http://www.system.com/access/$ 1? user = usera [P]
元のリクエストにあった追加のクエリ文字列パラメータを渡すことを指しているのであれば、代替、ディレクティブQSA
に (Query String Append) フラグが必要ですRewriteRule
。
旗QSA
合併リクエストのクエリ文字列と、代替そうしないと、指定したクエリ文字列がリクエストのクエリ文字列を上書きしてしまい、渡されなくなります。
例えば:
RewriteRule (.*) http://www.system.com/access/$1?user=usera [QSA,P]
余談:これ...
RewriteCond% {HTTP_HOST} ^usera.system.com$ [OR] RewriteCond% {HTTP_HOST} ^www.usera.system.com$
以下と同じで、FQDN (ドットで終わる) も許可されます。
RewriteCond% {HTTP_HOST} ^(www\.)?usera\.system\.com [NC]
ドットをエスケープしてリテラルドットに一致させることを忘れないでください。そうしないと、一致してしまいます。どれでも文字。このNC
フラグは、不正なリクエストをキャッチするためのものです。