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

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

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

ApacheウェブサーバーのためのURL書き換えモジュールです。主にプリティーURLに使われていますが、同様に単純置換を超えた、多様なタスクの処理能力や柔軟性があります。

Apache

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

.htaccess

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

Q&A

解決済

1回答

2628閲覧

htaccess(mod_rewrite)で「/hoge/huga」にアクセスしたら、URLはそのままで/hoge/index.phpにアクセスするという手法は可能でしょうか?

退会済みユーザー

退会済みユーザー

総合スコア0

mod_rewrite

ApacheウェブサーバーのためのURL書き換えモジュールです。主にプリティーURLに使われていますが、同様に単純置換を超えた、多様なタスクの処理能力や柔軟性があります。

Apache

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

.htaccess

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

0グッド

0クリップ

投稿2016/09/23 12:40

htaccessファイルにて、mod_rewriteを使って比較的シンプルなURL操作を行おうとしましたが、500エラーや思わぬ方向に飛んで404エラーが出るなどでmod_rewriteの記述方法で困っております。

ぜひともご回答よろしくお願いいたします。

設定状況は、投稿の最後に【前提条件】でまとめましたので、まずは【目的】と【困っていること】からお話いたします。

【目的】
1)URLとして「http://xxx.jp/hoge/huga」にアクセス
2)上記1)のURLはそのままで、/hoge直下にあるindex.phpにアクセスして処理を要求
(※ここで「huga」はどうするのかといえば「$SERVER['REQUEST_URI']」
で取得し処理内パラメータで使う)
3)上記1)のURLはそのままで、index.phpからのレスポンスをブラウザに送る

【困っていること】
mod_rewriteの記述方法が間違ってるのは言うまでもないですが、
こういったケースでの記述方法が見当つきません。

〇実際にどのような不都合が出ているか・・・?
Case1) /hoge/hugaが消えてしまい「/hoge/」だけになってしまう
Case2)HTTP500エラー出力

(/var/log/httpd/error.log より) 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.

Case3)「/hoge/huga」というファイルがないため、HTTP404エラーが出る。

以上となります。
ご提案や指摘がございましたらぜひともご回答よろしくお願いいたします。


【前提条件】
(1)システム要件
OS = CentOS 6.7(Final)
WWWサーバ = Apache 2.2.15
言語 = PHP 5.3.3

(2)httpd.confの設定

<Directory /hoge/public_html/> AllowOverride All Order allow,deny allow from all Options -Indexes </Directory>

(3)PHPソースとhtaccessのファイル位置
/hoge/public_html
┣ .htaccess
┗ index.php

(4)上記(3)htaccessの記述内容

RewriteEngine on #URLの「/huga」がかき消されて、index.phpにアクセスされる例 RewriteRule (.*)/$ index.php?%{QUERY_STRING} [L] #エラーが出てしまう例 #”Request exceeded the limit of 10 internal redirects due to probable configuration error.” RewriteRule (.*)/$ index.php/$1 [L]

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

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

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

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

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

guest

回答1

0

ベストアンサー

大変失礼しました。
自己解決しました。
邪道とか言われそうですが、下記の記述で通りました。

#/hoge/public_html/.htaccessの中身 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*)/$ index.php/$1 [L] #これであれば$1に「/fuga」が持ち込まれ、index.phpにアクセスされる。

投稿2016/09/24 07:56

編集2016/09/24 09:48
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問