1

すべてのフォルダーを (ワイルドカードを使用して) サブドメインにリダイレクトしようとしています。例えば:

www.mywebsite.com/folder1 から folder1.mywebsite.com/
www.mywebsite.com/folder2 から folder2.mywebsite.com/
www.mywebsite.com/folder3 から folder3.mywebsite.com/

それぞれのルールを作成せずに、それらすべてをそれぞれのサブドメインにリダイレクトする方法はありますか?

私は試した:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com$
RewriteCond %{HTTP_HOST} ^(\w+)\.mywebsite\.com$
RewriteRule ^(.*)$ /%1/$1 [QSA]

しかし、それは私に内部エラー500を与えます

4

1 に答える 1

2

ルールがループしないようにする必要があります。条件を使用して が/%1/$1実際に存在するかどうか、またはURI がまだで始まっていないことを最初に確認する必要があります。%1

そう:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com$
RewriteCond %{HTTP_HOST} ^(\w+)\.mywebsite\.com$
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
RewriteRule ^(.*)$ /%1/$1 [QSA]

または:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com$
RewriteCond %{HTTP_HOST} ^(\w+)\.mywebsite\.com$
RewriteCond %{REQUEST_URI}:%1 !^/([^/]+)/([^:]*):\1
RewriteRule ^(.*)$ /%1/$1 [QSA]

この!^/([^/]+)/([^:]*):\1式は、URI の最初のフォルダーをグループ化し、それを で後方参照します\1。それらが等しい場合、URI の最初のフォルダーは%1、前の一致に後方参照されます(\w+)

于 2012-11-14T05:49:57.533 に答える