質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

2回答

3006閲覧

wwwにリダイレクトする方法

popula

総合スコア49

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

0クリップ

投稿2014/12/30 15:37

**http://abc.com**のアクセスを
**http://www.abc.com**にリダイレクトする方法について質問があります。

/var/www/abc.com/public_html/
にindex.htmlやその他jsファイルなどがあります。
/var/www/abc.com/
に**.htaccess**を置き、内容は
RewriteEngine on RewriteCond %{HTTP_HOST} ^abc.com RewriteRule ^(.*)$ http://www.abc.com/$1 [R=301,L]
このようにしました。

しかし、これで**http://abc.com**にアクセスするとなぜか**http://www.abc.com/public_html/**にリダイレクトされてしまいます。

public_htmlというサブディレクトリは設定していないので、404 Not Found と表示されます。

因みに/etc/httpd/conf.d/virtualhost.confは下記の通りです。
`
<VirtualHost *:80>
ServerName abc.com
DocumentRoot "/var/www/abc.com/public_html"
DirectoryIndex index.html
ErrorLog /var/log/httpd/abc.com_error_log
CustomLog /var/log/httpd/abc.com_access_log combined
AddDefaultCharset UTF-8
<Directory "/var/www/abc.com/public_html">
AllowOverride All
</Directory>
</VirtualHost>

<VirtualHost *:80>
ServerName www.abc.com
DocumentRoot "/var/www/abc.com/public_html"
DirectoryIndex index.html
ErrorLog /var/log/httpd/abc.com_error_log
CustomLog /var/log/httpd/abc.com_access_log combined
AddDefaultCharset UTF-8
<Directory "/var/www/abc.com/public_html">
AllowOverride All
</Directory>
</VirtualHost>
`
現在はどちらも同じファイルを表示するようにしています。

ドットインストールなどを参考に見よう見まねで作ってきたので、色々とおかしい部分があると思います。
何かありましたら是非アドバイス頂けると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

.htaccess を /var/www/abc.com/public_html/ に置く必要があります。

.htaccess に mod_rewrite を書く場合、概ね次のように処理されます。

  1. リクエストされたファイル名からディレクトリのプレフィックスを取り除く
    • /var/www/abc.com/public_html/ -> public_html/
  2. Rule のマッチングを行う
  3. Cond のマッチングを行う
  4. URL の書き換えを行う

なので、次のように RewriteRule を変更してもいいかもしれません。

RewriteEngine on RewriteCond %{HTTP_HOST} ^abc.com RewriteRule ^public_html/(.*)$ http://www.example.com/$1 [R=301,L]

あと、こういう場所でドメイン名を書くときは例示用のドメイン example.com などを使ったほうがいいです。

投稿2014/12/31 00:38

ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

popula

2014/12/31 03:02

.htaccess を public_html/ に置いたら正しくリダイレクトされました。 方法だけでなく処理の仕組みも教えて頂きありがとうございます。勉強になります。
guest

0

lang

1<Files ~ "^.(htaccess|htpasswd)$"> 2deny from all 3</Files> 4RewriteEngine on 5RewriteCond %{HTTP_HOST} ^(abc.com)(:80)? [NC] 6RewriteRule ^(.*) http://www.abc.com/$1 [R=301,L] 7order deny,allow

これでどうでしょうか?

投稿2014/12/30 16:00

pac894398

総合スコア429

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問