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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

4688閲覧

302リダイレクトで404エラーが出ます。

design_teratail

総合スコア14

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/05/25 05:00

編集2017/05/26 06:15

###前提・実現したいこと
.htaccessで302リダイレクトをしたいのですが、
ディレクトリを指定し、そのページへのリダイレクトは成功するのですが、
それ以下の階層のページには404エラーが出てしまいます。
リダイレクトしたいページは、トップページです。

###発生している問題・エラーメッセージ

example_shitanokaisou(サンプルなので適当な名前です)にアクセスしたら、
http://www.example.co.jp(トップページ)に行かせたいのですが、
example_shitanokaisou/example2 などのexample_shitanokaisouより下の階層にあるページに
アクセスすると、トップページにいかず、
http://www.example.co.jp/example2
のような遷移をしてしまいます。
###該当のソースコード
RewriteRule ^example_shitanokaisou.* http://www.example.co.jp [R=302,L]

###試したこと
.htaccessをトップの階層に置いたり、
example_shitanokaisouの階層に置いたりしてみましたが
変わらずです。
###補足情報(言語/FW/ツール等のバージョンなど)
分かり辛い説明ですみません。
質問などありましたら遠慮なく。
302と書きましたが301の方がよいのでしょうか(SEO的に。)

###追記(.htaccessの内容)
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.
.php)$ $1 [L]
RewriteRule . index.php [L]
#Added on 20161104-001151 by ControlPanel
Action application/x-httpd-php /global-bin/php-5.4.cgi

RewriteRule ^example_shitanokaisou.* http://www.example.co.jp [R=302,L]

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

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

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

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

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

TaichiYanagiya

2017/05/25 08:36

RewriteRule はその設定でいいはずですが、挙動を見ると Redirect の動きに見えます。「Redirect /example_shitanokaisou http://www.example.co.jp」が設定されていませんでしょうか。
design_teratail

2017/05/25 08:47

しておりません。(Redirect も試してみましたが、だめでした。)RewriteRule の設定をしても下の階層が表示されます。
TaichiYanagiya

2017/05/25 09:10

Apache httpd のバージョンは? リライトのログを見たいのですが、サーバーの設定ファイル(httpd.conf など)は変更できる環境でしょうか?
guest

回答2

0

rewriteしまくってるテストサーバーに1行加えてみましたが・・・・

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^example_shitanokaisou.* http://example.com/ [R=302,L]

これら全部入っているでしょうか?

ためしにrewrite環境にほぼコピペで入れたら、お望みの動作をしたような感じがしましたが。

投稿2017/05/25 05:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

design_teratail

2017/05/25 05:29

試してみましたが変わらずでした・・・。
退会済みユーザー

退会済みユーザー

2017/05/25 05:41

ちなみに、これはテストです。 ``` RewriteRule ^example_shitanokaisou(.*) http://example.com/?$1 [R=302,L] ``` これにすると、URLはどうなるでしょうか?
design_teratail

2017/05/25 07:49

回答有り難うございます。 >だとしたら、 >http://original.co.jp/ で404エラーが出ていたでしょうか? >それとも、 >http://example.co.jp/ で404エラーが出ていたでしょうか? エラーは出ませんでした。 >ちなみに、これはテストです。 試してみましたが、やはり http://www.example.co.jp/example2 のようになってしまいます。 ディレクトリ内のファイル全てのページを遷移したいのですが、 どうにかならないのでしょうか。
guest

0

ベストアンサー

nanonano さんの回答とコメントを拝見すると、(documentroot)/.htaccess に何を設定しても、他の設定ファイルが優先されてリダイレクトしているように見えます。
サーバーの設定ファイル(httpd.conf, 各バーチャルホストの設定ファイルなど)や、(documentroot)/example_shitanokaisou/.htaccess などに Redirect, RewriteRule が設定されていないでしょうか?

(2017/05/26 15:44) 追記
/example_shitanokaisou/example2/ が存在しない場合は index.php に、実際に存在する場合は RewriteRule ^ - [L] が適用されてそのままとなり、302 にも 404 にもならないように思うのですが、何ででしょうね。
ともかく、RewriteRule ^example_shitanokaisou.* http://www.example.co.jp [R=302,L] を先に評価するよう、RewriteRule ^index\.php$ - [L] の直前または直下あたりに設定するといいと思います。

(設定例) RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteRule ^example_shitanokaisou.* http://www.example.co.jp [R=302,L] (以下、略)

投稿2017/05/26 02:49

編集2017/05/26 06:48
TaichiYanagiya

総合スコア12146

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

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

design_teratail

2017/05/26 04:12

サーバーの設定ファイルについてはわかりませんが、DocumentRoot以外に.htaccessは設置しておりません。DocumentRootにある.htaccessに、RewriteRuleがありますがそれの記述が邪魔しているのでしょうか?よくわかりません。 参考に RewriteRule . index.php [L] という記述がありますが関係はないのでしょうか。
TaichiYanagiya

2017/05/26 04:14

それでは、.htaccess の内容すべてを教えてくださいませんでしょうか。 質問を編集して記載ください。
design_teratail

2017/05/26 06:15

追記しました。 回答お待ちしております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問