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

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

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

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Apache

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

解決済

1回答

356閲覧

htaccessでリライトの処理を書きたい

okame

総合スコア54

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Apache

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

0クリップ

投稿2017/11/06 04:27

###前提条件

  • apache ver2.4

※mod_rewriteを読み込み済みであること、httpd.confは編集不可であることを前提とします。

###実現したいこと
以下のようなディレクトリ構造だったとして、、、

(documentRoot) .htaccess web(フォルダ) |-index.html |-... |-css(フォルダ) |-js(フォルダ)

ブラウザからのアクセスをすべてweb/配下にリライト(リダイレクトではない)したいと思っています。

###試してみたこと
公式ドキュメントやGoogle先生に聞いてみたりして、.htaccessにこんな風に書いてはみたのですがうまくいかず。

#RewriteEngine On #RewriteBase /web #RewriteRule ^(.*)$ /web/$1 [L]

###というわけで

お手数ですが皆様のお知恵を拝借できれば幸いです。
宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

.htaccessにこんな風に書いてはみたのですがうまくいかず。

まさか、先頭に#を書いていませんよね?

RewriteEngine On RewriteRule ^(.*)$ /web/$1 [L]

でいいと思います。最初からURLに/web/が含まれているケースを除くとすると、

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !^/web/ RewriteRule ^(.*)$ /web/$1 [L]

投稿2017/11/06 05:09

otn

総合スコア84423

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

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

okame

2017/11/06 11:03

回答ありがとうございます! 取り急ぎご教示いただいた内容で.htaccessを書き直してみたら、以下エラーログが出ました。 [Mon Nov 06 19:59:36 2017] [error] [client ::1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. ログの出力レベルを変えて再度試してみればよいですかね?
otn

2017/11/06 13:15

ううむ。こちらでループはしてません。 一言一句上記のまま書いていますか?
k-nishiyama

2017/11/07 02:33

この場合 REQUEST_FILENAME ではなく、 REQUEST_URI だと思われます。 ※REQUEST_FILENAMEの場合、フルパスならいけるかもしれません。
k-nishiyama

2017/11/07 02:45

補足です。 恐らくotnさんの環境はVirtualHost内の環境でrewrite構文を指定していると思われます。 VirtualHost内であれば「REQUEST_FILENAME」と「REQUEST_URI」は事実上同義となりますが 通常「REQUEST_FILENAME」はフルパスでの指定が必要となります。
okame

2017/11/07 03:17

> otn様 はい。一言一句ご教示のまま書きました。 > k-nishiyama様 REQUEST_URIに書き直したら無事リライト成功しました!ありがとうございます!! ...この場合ベストアンサーどうすればよいですかね^^;
k-nishiyama

2017/11/07 04:10 編集

無事動作してよかったです。 私は便乗で補足しただけですし、お構いなくm(_ _)m
okame

2017/11/07 04:22

> K-nishyama様 承知しました。本当に有難うございました!!m(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問