web-dev-qa-db-ja.com

URLを変更せずにサブドメインをフォルダーにリダイレクトする

私は.htaccessを使用してフォルダへのサブドメインのマスキングを達成しようとしています

わかりやすくするために更新:ユーザーがurl:subdomain.example.comを入力し、example.com/subdomainからコンテンツを取得する間、同じURLにとどまるようにしたい

Plesk 12ウェブホストを使用しています。私はたくさんの投稿を試しましたが、達成できる唯一のことは、xxxx.example.comからexample.com/xxxx(マスクされていない)へのリダイレクトを取得することでした。

問題は、フォルダーが他のプログラム(独自の構造とコンテンツを持つ)によって生成されるため、魔法を起こさせるためにmod_proxyを他にどのように配置するかは本当にわかりません。

PDATED 11-06-2015サブドメインフォルダーを/ sd /に移動して、他のファイルとは別に整理できるようにしました。

PDATED 11-07-2015プログラムが各要素に対して1つの「prettyurl」のみを作成できるようになったので、今ではフォルダもありません。/sd/template/subdomain1/、/ sd/template/subdomain2など。

私の現在の.htaccess:

Options +FollowSymlinks -MultiViews
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#RewriteRules for pretty url
RewriteRule ^sd/template/index.php$ "sd/template/" [R=301,L,QSA]

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule . - [L]

#sd/template/index.php
RewriteRule ^sd/template/.*?([^\.\/]*)\.html$ sd/template/?pname=$1 [L,QSA]
RewriteRule ^sd/template/([1-2]\d{3})/(?:(0[1-9]|1[0-2])/(?:(0[1-9]|1[0-9]|2[0-9]|3[0-1])/)?)?$ sd/template/?d=$1$2$3 [L,QSA]
RewriteRule ^sd/template/[^\.]*?([^/\.]*)/$ sd/template/?fname=$1 [L,QSA]
RewriteRule ^sd/template/[^\.]*?([^/\.]*)$ "$0/" [R=301,L,QSA]

RewriteCond %{HTTP_Host} ^(.*)\.example\.com
RewriteRule ^(.*)$ /sd/template/%1 [L,NC]
</IfModule>

ワイルドカードサブドメインも作成しましたが、それが役立つか悪化するかはわかりません。

現在、アドレスバーに「test1.example.com」と入力すると、「example.com/test1/」に正しくリダイレ​​クトされますが、表示されるURLを変更せずにコンテンツを表示する必要があります。

PDATED 11-07-2015 test.example.comを使用すると、test.example.com/sd/template/test /にリダイレクトされます。 test.example.comを取得するにはどうすればよいですか?

3日後にウェブ中のさまざまな投稿を読んで、ここで立ち往生しているので、どんな助けも大歓迎です。

1
LordNeo

RewriteRuleのRフラグは、外部リダイレクトを強制するためのものです。コンテンツの発信元をマスクしている場合は、これを使用したくないでしょう。

これを試して:

RewriteRule ^/(.*)$ /path/to/your/subdomain/directories/%1/$1 [L,NC]

セキュリティを強化するために、サブドメインの一致をより具体的にしたい場合があります。

1
Dave Lozier