クエリ文字列を使用したApache mod-rewriteリダイレクトドメイン名
-
22-07-2019 - |
質問
英国全土に多数の支店を持つクライアントがいます。一部の支店には、独自のドメイン名を持つ独自のサイトがあります。クライアントには、次の場所にアクセスする部分構築システムがあります。
www.client.com/aboutus.php?id=branchId
は、その特定のブランチの会社概要ページを示しています。私が必要とするのは、特定のドメインをbranchIdにマップする方法です(これは現時点ではすべてDBに格納されています)。
www.client.com/aboutus.php?id=4
マップ先
www.branchid4.com/aboutus.php
解決
これは私には有効です。ドメインが単一の一般的なルールセットで動作するかどうか(つまり、IDを取得してリライタで使用するかどうか)がわからない場合は、URLごとに最後の3行を繰り返す必要があります
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?client.com$
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /aboutus\.php\?id=4\ HTTP/
RewriteRule ^.*$ http://www.branchid4.com/about.php? [R=301,L]
他のヒント
ホスト名から重要な部分を取り出してスクリプトに渡すことができます:
RewriteEngine on
RewriteCond %{QUERY_STRING} !(^|&)branchName=
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.com$
RewriteRule .* <*>?branchName=%1 [L,QSA]
所属していません StackOverflow