web-dev-qa-db-ja.com

サブドメインへの.htaccessディレクトリ

http://domain.com/sub/2/3/4.htmlのように開始してhttp://sub.domain.com/2/3/4.htmlに変わるメインページとして使用するサブドメインをディレクトリ(。htaccessで作成)から作成しようとしています。

フォルダーシステムは次のようになります。

www\sub\2\3\

wwwにはindex.htmlがあり、サブフォルダーには別のindex.htmlがあります。

私は現在、別のサイトで見つけたこのコードを持っています:

Options -Indexes +FollowSymLinks

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_Host} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

RedirectMatch 301 ^/sub/(.*)$ http://sub.domain.com/$1

ドメインパスをhttp://sub.domain.com/に変更することはできますが、表示されるページをwwwディレクトリのインデックスからサブディレクトリのインデックスに変更することはできません。

また、他のページを開くこともできません。つまり、sub.domain.com/2/3/4.htmlは許可されません。誰でもアドバイスをいただければ幸いです。

4
reblerebel

メインのwwwディレクトリ内のフォルダーをサブドメインに変換する.htaccessの素晴らしいコードを見つけました。 www/somefolderはsomefolder.domain.comに変わります。特定のディレクトリ内のディレクトリがサブドメインになるように設定することもできます。 www/folder/somefolderはsomefolder.domain.comに変わります

以下のコードは、ディレクトリを特定のディレクトリ内にリダイレクトするように設定されています

Options +FollowSymLinks -Multiviews
RewriteEngine on
RewriteBase /
#
# Canonicalize the hostname
RewriteCond www.%{HTTP_Host} ^(www)\.(example\.com) [OR]
RewriteCond %{HTTP_Host} ^www\.([^.]+)\.(example\.com) [OR]
RewriteCond %{HTTP_Host} ^([^.]+)\.www\.(example\.com) [OR]
RewriteCond %{HTTP_Host} ^([^.]+)\.(example\.com). [OR]
RewriteCond %{HTTP_Host} ^([^.]+)\.(example\.com):[0-9]+
RewriteRule (.*) http://%1.%2/$1 [R=301,L]
#
# If subdomain is NOT www
RewriteCond %{HTTP_Host} !^www\.example\.com [NC]
# Extract (required) subdomain to %1
RewriteCond %{HTTP_Host} ^([^.]+)\.example\.com$
# Rewrite if requested URL resolves to existing file or subdirectory in /subdomains/<subdomain>/ path
RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/$1 -d
RewriteRule (.*) /subdomains/%1/$1 [L]

「example.com」をドメインに変更するだけです。 'domain.com'は、dots以外の他の記号を削除しないようにしてください。現在、「サブドメイン」というフォルダ内のディレクトリはサブドメインに変更されます。 www/subdomains/blogは「blog.domain.com」に変わり、wwwディレクトリ内のフォルダーをサブドメインに変更するように設定されます。 www/blogは「blog.domain.com」に変わります

サブドメインに自動的に転送したい場合blog.domain.comは、これを他のコードの最後に配置する必要があります

RewriteCond %{HTTP_Host} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://blog.example.com/$1 [R=301,L]

この恐ろしい問題の解決策を見つけるのに私が何年もかかったすべての人にこれがうまくいくことを願っていますReblerebel

1
reblerebel