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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mod_rewrite

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

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

3回答

4369閲覧

MAMPによるhttpd.confのmod_rewite設定について

退会済みユーザー

退会済みユーザー

総合スコア0

HTTP

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mod_rewrite

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

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

1クリップ

投稿2015/03/14 08:02

下記のようにMAMPのhttpd.confの一番下にmod_rewite設定のため行を追加したのですが
動作しません。
httpd.conf以外に他にも設定が必要なのでしょうか?

※ちなみにURLをmod_rewite設定で
http://localhost/○○○/index.php?category=△△△△△

http://localhost/○○○/△△△△△
にしようとする予定です。

よろしくお願いいたします。

<Directory /> Options Indexes FollowSymLinks AllowOverride All </Directory>

DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_URI} ^/○○○○/?(.*)$
RewriteCond %{QUERY_STRING} (^|&)category=([^&]+)($|&)
RewriteRule ^○○○○/?$ /○○○○/%2? [L,R=301]
</IfModule>

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

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

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

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

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

guest

回答3

0

少なくとも mod_rewite が動いているようで、一歩前進ですね。
次は、以下のようにテストしてみました。

lang

1<IfModule mod_rewrite.c> 2RewriteEngine On 3RewriteCond %{REQUEST_URI} ^/abcdefg/?(.*)$ 4RewriteCond %{QUERY_STRING} (^|&)category=([^&]+)($|&) 5RewriteRule ^/abcdefg/?$ /hijklmn/%2? [L,R=301] 6RewriteLog /tmp/rewrite.log 7RewriteLogLevel 3 8</IfModule>

その後、ブラウザから http://FQDN//abcdefg/category=hoge にアクセス
すると、以下のログが取得できました。ここまではうまく動いているようです。

lang

1(IP) - - (time) (session) (2) init rewrite engine with requested uri /abcdefg 2(IP) - - (time) (session) (3) applying pattern '^/abcdefg/?$' to uri '/abcdefg' 3(IP) - - (time) (session) (2) rewrite '/abcdefg' -> '/hijklmn/hoge?' 4(IP) - - (time) (session) (3) split uri=/hijklmn/hoge? -> uri=/hijklmn/hoge, args=<none> 5(IP) - - (time) (session) (2) explicitly forcing redirect with http://(FQDN)/hijklmn/hoge 6(IP) - - (time) (session) (1) escaping http://(FQDN)/hijklmn/hoge for redirect 7(IP) - - (time) (session) (1) redirect to http://(FQDN)/hijklmn/hoge [REDIRECT/301] 8(IP) - - (time) (session) (2) init rewrite engine with requested uri /hijklmn/hoge 9(IP) - - (time) (session) (3) applying pattern '^/abcdefg/?$' to uri '/hijklmn/hoge' 10(IP) - - (time) (session) (1) pass through /hijklmn/hoge

こんな感じで、一歩ずつ先に進めながら障害箇所を絞り込んでいく、
というのを普段からやっています。ご参考になれば。

投稿2015/03/14 15:06

hotta

総合スコア1613

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

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

退会済みユーザー

退会済みユーザー

2015/03/14 15:22

hotta様 ご教示ありがとうございます。 (IP) - - (time) (session) (2) init rewrite engine with requested uri /abcdefg (IP) - - (time) (session) (3) applying pattern '^/abcdefg/?$' to uri '/abcdefg' (IP) - - (time) (session) (2) rewrite '/abcdefg' -> '/hijklmn/hoge? まで上記3項目同じように出力されました。 トライアンドエラーを繰り返しながら問題箇所を絞っていくのですね。 まだまだ、経験不足の私にとって大変力になるお言葉です。 ありがとうございます。
guest

0

手元の環境で、以下の様な設定を入れてみました。

lang

1<IfModule mod_rewrite.c> 2RewriteEngine On 3RewriteRule ^/abcdefg /hijklmn 4RewriteLog /tmp/rewrite.log 5RewriteLogLevel 3 6</IfModule>

その後、ブラウザから http://対象FQDN/abcdefg にアクセスしてみると、
(もちろん /hijklmn なんてないのでブラウザでは 404 Not Found になりますが)
/tmp/rewrite.logに、以下のように記録されました(一部加工しています)。

lang

1(IP) - - (time)(session) (2) init rewrite engine with requested uri /abcdefg 2(IP) - - (time)(session) (3) applying pattern '^/abcdefg' to uri '/abcdefg' 3(IP) - - (time)(session) (2) rewrite '/abcdefg' -> '/hijklmn' 4(IP) - - (time)(session) (2) local path result: /hijklmn 5(IP) - - (time)(session) (2) prefixed with document_root to /var/www/(docroot)/hijklmn 6(IP) - - (time)(session) (1) go-ahead with /var/www/(docroot)/hijklmn [OK]

まずはこんな感じで、設定が効いているかどうかを確認してみましょう。

RewriteLog の場所は適当に読み替えてください。環境が Windows であれば、
C:\rewite.log など、確実に書き込めそうなところにしてください。

投稿2015/03/14 13:58

hotta

総合スコア1613

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

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

退会済みユーザー

退会済みユーザー

2015/03/14 14:34

hotta様 ご教示ありがとうございます。 ご教示いただきました通り、設定をしましたらlogにも同じような形で (IP) - - (time)(session) (2) local path result: /hijklmn (IP) - - (time)(session) (2) prefixed with document_root to /var/www/(docroot)/hijklmn (IP) - - (time)(session) (1) go-ahead with /var/www/(docroot)/hijklmn [OK] 以外の形は出力されました。 設定が効いているかわかりませんが、少なくとも動いていることは確認できました。
guest

0

mod_rewrite自体の読み込みはされていますでしょうか。httpd.confの上の方に、

LoadModule rewrite_module modules/mod_rewrite.so

のような行があれば、mod_rewriteが読み込まれています、見つからない、あるいは#でコメントアウトしているような状態であれば、書き換えてmod_rewriteを読み込ませましょう。

投稿2015/03/14 08:07

maisumakun

総合スコア145121

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

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

退会済みユーザー

退会済みユーザー

2015/03/14 08:47

maisumakun様 ご教示頂きありがとうございます。 確認しましたところhttpd.confの上の方に LoadModule rewrite_module modules/mod_rewrite.so が存在しコメントアウトされていないことも確認できました。 しかしそれでも動きませんでした。 下記のソースの設置場所など関係するのでしょうか? <Directory /> Options Indexes FollowSymLinks AllowOverride All </Directory> DirectoryIndex index.php <IfModule mod_rewrite.c> RewriteEngine On #RewriteBase / RewriteCond %{REQUEST_URI} ^/○○○○/?(.*)$ RewriteCond %{QUERY_STRING} (^|&)category=([^&]+)($|&) RewriteRule ^○○○○/?$ /○○○○/%2? [L,R=301] </IfModule>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問