例えば、
- www.hoge.com →サービスのメインサイト
- help.hoge.com →サービスのヘルプサイト(バーチャルホスト)
のような形で運用していたものを、ファイル構成などを変更せず、
- www.hoge.com
- www.hoge.com/help
のように、メインサイト配下に内包して見せたい場合。主にSEO対策。
まず、help.hoge.comのapache設定ファイル(httpd.confなど)の内容をコピーしておく。
※今回はPlesk9下のバーチャルホストで動いているので、httpd.includeの内容をコピーしておく。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# cd /var/www/vhosts/hoge.com/conf # cat ./httpd.include : # 以下の部分をとりあえずズラッとコピーしておく <VirtualHost ***.***.***.***:80> ServerName help.hoge.com:80 SuexecUserGroup *** psacln ServerAdmin "***@***.**" DocumentRoot /var/www/vhosts/hoge.com/subdomains/help/httpdocs CustomLog /var/www/vhosts/hoge.com/statistics/logs/access_log plesklog ErrorLog /var/www/vhosts/hoge.com/statistics/logs/error_log ScriptAlias /cgi-bin/ /var/www/vhosts/hoge.com/subdomains/help/cgi-bin/ <IfModule mod_ssl.c> SSLEngine off </IfModule> <Directory /var/www/vhosts/hoge.com/subdomains/help/httpdocs> <IfModule mod_perl.c> <Files ~ (\.pl$)> SetHandler perl-script PerlHandler ModPerl::Registry Options ExecCGI allow from all PerlSendHeader On </Files> </IfModule> <IfModule sapi_apache2.c> php_admin_flag engine on php_admin_flag safe_mode off php_admin_value open_basedir "/var/www/vhosts/hoge.com/subdomains/help/httpdocs:/tmp" </IfModule> <IfModule mod_php5.c> php_admin_flag engine on php_admin_flag safe_mode off php_admin_value open_basedir "/var/www/vhosts/hoge.com/subdomains/help/httpdocs:/tmp" </IfModule> Options -Includes +ExecCGI </Directory> </VirtualHost> : |
次に、alias用のapache設定ファイルを作成する。Plesk9配下で動いている場合は、confの下にvhost.confという名前で作成する必要がある。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# cd /var/www/vhosts/hoge.com/conf # vi vhost.conf #先ほどコピーした内容をペーストし、不要な部分をコメントアウトする # ↓ すでにhttpd.includeのVirttualHostディレクティブが効いているのでここでは不要 #<VirtualHost ***.***.***.***:80> # ↓この辺もすでに効いているので不要 #ServerName help.hoge.com:80 #SuexecUserGroup *** psacln #ServerAdmin "***@***.**" #DocumentRoot /var/www/vhosts/hoge.com/subdomains/help/httpdocs #CustomLog /var/www/vhosts/hoge.com/statistics/logs/access_log plesklog #ErrorLog /var/www/vhosts/hoge.com/statistics/logs/error_log #ScriptAlias /cgi-bin/ /var/www/vhosts/hoge.com/subdomains/help/cgi-bin/ #<IfModule mod_ssl.c> # SSLEngine off #</IfModule> # ↓ここにalias設定を追記 ###### # /help でアクセスがあったら、今まで動かしていたhelpディレクトリの内容を表示 Alias /help /var/www/vhosts/hoge.com/subdomains/help/httpdocs ############################ # ↓以下はalias展開後の動きに関係してくるので必要 <Directory /var/www/vhosts/hoge.com/subdomains/help/httpdocs> <IfModule mod_perl.c> <Files ~ (\.pl$)> SetHandler perl-script PerlHandler ModPerl::Registry Options ExecCGI allow from all PerlSendHeader On </Files> </IfModule> <IfModule sapi_apache2.c> php_admin_flag engine on php_admin_flag safe_mode off php_admin_value open_basedir "/var/www/vhosts/hoge.com/subdomains/help/httpdocs:/tmp" </IfModule> <IfModule mod_php5.c> php_admin_flag engine on php_admin_flag safe_mode off php_admin_value open_basedir "/var/www/vhosts/hoge.com/subdomains/help/httpdocs:/tmp" </IfModule> Options -Includes +ExecCGI </Directory> #</VirtualHost> |
参考にしたサイト)
- http://blog.ko-atrandom.com/?p=434
- https://teratail.com/questions/45231
- http://www.neobit.jp/archives/232
- http://blog.dacelo.info/apache/entry-697.html
SSL用にもこの設定ファイルをコピーしておく。Pleskの場合SSL用のファイル名は、vhost_ssl.confにする必要がある。内容はとりあえず同じでOK。
1 |
# cp vhost.conf vhost_ssl.conf |
作成した設定ファイルをapacheに読み込んでもらうようにする。
1 |
# /usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=hoge.com |
参考にしたサイト):https://ex-cloud.jp/support/question/g-437
ヘルプサイトがワードプレスやCMSを使用している場合、.htaccessでリダイレクト設定(SEF 設定)を行っている場合があるので、静的URLでも動くよう修正する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# cd /var/www/vhosts/hoge.com/subdomains/help/httpdocs # vi .htaccess : # 旧URLを自動転送するため以下を追加 # ※「help.hoge.com」へのアクセスは「www.hoge.com/help」へリダイレクト RewriteCond %{HTTP_HOST} ^help\.hoge\.com$ RewriteRule ^(.*)$ https://www.hoge.com/help/$1 [R=301,L] : # 常時SSLにする場合は下記を追加 RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://www.hoge.com/help/$1 [R=301,L] : # ▼SEF設定部分 ##### # ※SEF=存在しないファイル,ディレクトリはindex.phpで対処 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_URI} !^/index\.php RewriteCond %{REQUEST_URI} (/[^.]*|\.(php|html?|feed|pdf|raw))$ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # パスを合わせるため以下を修正(Baseが www.hoge.com/ になるため) #RewriteRule .* index.php [L] RewriteRule .* /help/index.php [L] # ▲SEF設定部分 ##### |
参考にしたサイト)
- http://suirakukai.com/wordpress/22/wordpress-change-in-directory/
- http://d.hatena.ne.jp/noopable/20091009/1255067858#20091009f1
- https://seopack.jp/internal-seo/crawler-measures/normalization-of-www.php
最後にWEBサーバをリロード
1 2 |
# service httpd configtest # service httpd reload |
後はGoogleにインデックス登録してもらえるように、Search Console からsitemap.xmlなどを送信しておけばよいでしょう。