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

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

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

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

htaccessでRewriteEngine Onが効かないのはなぜですか?

hyskyo
hyskyo

総合スコア78

Apache

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

2回答

0グッド

0クリップ

28044閲覧

投稿2016/10/25 04:10

編集2016/10/25 04:15

ドメインの移動で元々あったhttp://www.test.com/index.htmlを叩くと新しいドメインのhttp://www.success.com/one_support/に飛ばしたくて下記の.htaccessにRewriteEngine Onを書いたのですが全然変わらないです、なぜでしょうか? ご指摘お願いし致します。

下記の二つの方法でやって見ました 方法1, RewriteEngine On RewriteCond %{HTTP_HOST} ^(http://www\.test\.com)(:80)? [NC] RewriteRule ^(.*)$ http://www.success.com/one_support/$1 [R=301,L] 方法2、 RewriteEngine On RewriteCond %{HTTP_HOST} ^http://www.test.com [NC] RewriteRule ^(.*)$ http://www.success.com/one_support/$1 [R=301,L]

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

kunai

2016/10/25 04:30

mod_rewriteは入っていますか?
A.Ichi

2016/10/25 04:38

Linuxでは、httpd.confに、LoadModule rewrite_module modules/mod_rewrite.so を設定します。
A.Ichi

2016/10/25 04:49

httpdに上記はデフォルトで入っている様です。訂正します。

回答2

1

ベストアンサー

環境として.htaccessが有効であることを前提(*)としての回答です。
(*mod_rewriteのインストールおよびload, AllowOverrideの設定)

きちんと動いているがRewriteCond に記述しているルールにマッチしてないだけでは?
%{HTTP_HOST} にはURLスキーム(http:やhttps:)は含まれません。

RewriteEngine On RewriteCond %{HTTP_HOST} ^(example\.com)(:80)?$ [NC] RewriteRule ^(.*)$ http://example.jp/one_support/$1 [R=301,L]

// 蛇足:例示するためのFQDNはexample.comやexample.jpなど存在しないことが保証されているものを使用しましょう。

追記:.htaccessが動作しない場合の確認事項
###基本的な事柄の確認

  • .htaccess の改行コードは [CR+LF]ではなく[LF] になってますか?
  • .htaccessの最後に改行が入ってますか?
  • .htaccess内にコメントなどで日本語が記述されていてかつ文字コードがUTF-8以外になってたりしませんか?
  • .htaccessのパーミッションが「604」(推奨)または「644」になってますか?

###RewriteLog
httpd.conf を編集可能な環境であればmod_rewriteのRewriteLogを出力できます。
VirtualHostで構成している場合は該当するVirtualHostディレクィブ内に記載します。
※大量に出力されるので確認が終われば削除してください。

以下では/tmp/rewrite.logへログを出力する設定。
一度アクセス後、rewrite.logを開いて原因究明してください。
もし存在しない場合は.htaccessが使用できない環境の可能性大です。

RewriteLog /tmp/rewrite.log RewriteLogLevel 9

###.htaccessが利用可能かどうかの確認
0. 404エラーの場合エラーページをgoogle topなどにリダイレクトする設定を記述。
0. 存在しないURL(ページ)にアクセスする。
0. 指定したURLへリダイレクトされるか確認する(例ではhttp://www.google.com/)。変化が無い場合は.htaccessが利用できない環境です。
※確認が終われば削除してください。

ErrorDocument 404 http://www.google.com/

投稿2016/10/25 04:59

編集2016/10/25 07:38
Y.H.

総合スコア7911

kei344👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

hyskyo

2016/10/25 07:03

YH.さん A.Ichiさん mod_rewriteやAllowOverrideの設定はしていますし、ご指摘通りにしても変わりません。 なぜかなあ??!!
hyskyo

2016/11/01 09:31

AllowOverride All <==こちらを有効にする旧サイトの方がInternal Server Errorになってしまいます 。新しいサイトの方は問題ないのですがこれは何が問題で有効にすると旧URLが新しいURLに飛ばなくて Internal Server Errorになってしまうのでしょか?
Y.H.

2016/11/01 09:36

.htaccessファイルを配置しているのであれば内容に間違いがある場合にInternal server Errorになります。 apacheのerror.log(default設定では/var/log/httpd/error.log)にエラーメッセージが出力されてませんか?
hyskyo

2016/11/01 09:47

/var/log/httpd/error.logで見たら下記のエラーが出ています!!どういう意味ですか? .htaccess: Invalid command '\xef\xbb\xbfOptions', perhaps misspelled or defined by a module not included in the server configuration
Y.H.

2016/11/01 09:59

.htaccessなど設定ファイル・ソースファイル等はすべてUTF-8(BOMなし)で作成してください。 \xef\xbb\xbf はBOM と呼ばれるUTF-8ですよマークです。 Windowsのメモ帳で編集してますか?メモ帳の使用はやめましょう。BOMつきでしか保存できません。参考: https://www.google.co.jp/search?q=.htaccess+BOM
hyskyo

2016/11/02 02:14

Y.H さん ありがとうございます。 ご指摘通り設定ファイル・ソースファイルを新しく書いて解決できました。 ありがとうございます。
Y.H.

2016/11/02 02:38

解決できてよかったです!

0

.htaccessを使える状態になってますか?
httpd.confのAllowOverride箇所を確認してはいかがでしょうか?
以下、ご参考までに。

▼ Apache ウェブサーバーで .htaccess を利用するには
http://kb.xpressone.net/2566

投稿2016/11/01 11:13

編集2016/11/01 13:42
pond

総合スコア350

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.83%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Apache

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。