1

htaccessでサブドメインを作ってみました。これまでのところうまくいっています。サブドメインを別のスクリプト内で Get-Parameter として使用しています。

ただし、誰かがこのパラメーターをそのまま使用すると、subdomain-parameter が上書きされます。

user1.domain.com/?site=user2 は user2.domain.com を表示します。(インターンは www.domain.com/index.php?site=user2 です)

そのため、サイトを ?site=user2 から user2.domain にリダイレクトしようとしましたが、[R] 修飾子を使用するたびに URL が変更され、ローカル フォルダーが表示されます。
RewriteBase /path/to/basefolder も役に立ちませんでした。

アドレスバーを実際に /?site=user1 または /index.php?site=user1 ではなく user1.domain.com に変更する方法を知っている人はいますか?
それとも私が何を間違えたのでしょうか?^^

これが私の現在のコードです:

RewriteEngine on
Options +FollowSymlinks

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^\?]+)\?(.*?)&?site=([^&\ ]+)([^\ ]*)
RewriteRule ^ http://%4.domain.com/%2?%3%5 [L,R]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteCond %{REQUEST_URI} !\.css$ [NC]
RewriteCond %{REQUEST_URI} !\.png$ [NC] 
RewriteRule \.php index.php

RewriteCond %{HTTP_HOST} ^(.*).domain.com$
RewriteCond %{REQUEST_URI} !^/.*/
RewriteRule (.*) index.php?site=%1 [NC,QSA,L]

<Files .htaccess>
order allow,deny
deny from all
</Files>
4

1 に答える 1

1

これを現在のルールの上 ( のすぐ下Options +FollowSymlinks) に追加してみてください:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^\?]*)\?(.*?)&?site=([^&\ ]+)([^\ ]*)
RewriteRule ^ http://%4.domain.com/%2?%3%5 [L,R]

したがって、誰かが URL アドレス バーに次のように入力すると:http://domain.com/some/path/to/file.php?foo=bar&site=user2&other=paramにリダイレクトされます (そしてアドレス バーは次のように変更されます):http://user2.domain.com/some/path/to/file.php?foo=bar&other=param

于 2012-09-20T18:36:55.153 に答える