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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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スクリプトは「サーバサイドスクリプト」と呼ばれています。

.htaccess

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

Q&A

4回答

1729閲覧

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スクリプトは「サーバサイドスクリプト」と呼ばれています。

.htaccess

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

0グッド

1クリップ

投稿2015/03/16 15:29

下記のようにhttpd.confの一番下にmod_rewite設定のため行を追加したのですが
動作しません。

<IfModule mod_rewrite.c> を外し何も囲んでいない状態で ーーーーーーーーー RewriteEngine On RewriteCond %{QUERY_STRING} (^|&)category=([^&]+)($|&) RewriteRule ^○○○/index.php$ /○○○/%2? ーーーーーーーーー

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

http://localhost/○○○/△△△△△
にする予定です。

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

※追記
たまたまとあるブログで紹介されていた下記のやり方で試したところ
リンクを押した瞬間URLが短縮(静的化)される動きがありましたがカスタマイズがわからず悩んでおります。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ index.php?id=$1
RewriteCond %{THE_REQUEST} ^./index.php
RewriteRule ^(.)index.php$ http://example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(www¥.example¥.com)(:80)? [NC]
RewriteRule ^(.)$ http://example.com/$1 [R=301,L]
RewriteCond %{QUERY_STRING} ^id=(.)$
RewriteRule ^$ http://example.com/%1?

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

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

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

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

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

guest

回答4

0

RewriteCondの(^|&)ってのは、たぶんNGです。

ここが参考になるかと。

投稿2015/03/18 20:50

chokojori

総合スコア971

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

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

退会済みユーザー

退会済みユーザー

2015/03/21 00:25

先ほど別件(MAMPのindex.php)で投稿した後、この問題に取り掛かりましたら 無事URLは短縮される動きがありました。 しかし今度は、 http://localhost//○○○○/?category=△△△△ というようにlocalhostのところに「/」が多く付いてしまいます。 mod_rewriteは以下のようにしています。 RewriteEngine On RewriteCond %{QUERY_STRING} (^|&)category=([^&]+) RewriteRule ^/potato/index.php$ /potato/%1? ちなみにURLが短縮されてリンクが押してもhrefの中身が空っぽになってしまってパラメータが付与できませんでした。
chokojori

2015/03/21 01:58

くりかえしになりますが、RewriteCondのところにある(^|&)という正規表現は不正だと思います。メタ文字^は文字列の先頭をあらわしますが、おそらくクエリ文字列の先頭を^で表現し、先頭または&文字の直後にcategory=が続いたら...という条件式を表現しているつもりでしょうが、メタ文字^と&文字を(|)で並置して選択させることはできないはずです。
guest

0

RewriteRule に URL パス先頭の「/」が必要だと思います。転記もれでしょうか?

lang

1RewriteRule ^/aaa/index.html$ /aaa/%2?

投稿2015/03/18 15:23

TaichiYanagiya

総合スコア12146

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

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

退会済みユーザー

退会済みユーザー

2015/03/21 00:19

無事URLは短縮される動きがありましたが今度は、 http://localhost//○○○○/?category=△△△△ というようにlocalhostのところに「/」が多く付いてしまいます。 mod_rewriteは以下のようにしています。 RewriteEngine On RewriteCond %{QUERY_STRING} (^|&)category=([^&]+)($|&) RewriteRule ^/○○○○/index.php$ /○○○○/%1?
TaichiYanagiya

2015/03/23 01:13

そのような動作にはならないと思うのですが。 この RewriteRule ではリダイレクトしていないようですので、URL が変わったのはログで確認されたのでしょうか? それとも、この RewriteRule 以外にリダイレクトするルールがあるのでしょうか?
guest

0

はじめまして。

値の参照が%2になってるのがおかしいんじゃないですか?
値がcategoryの1つしかないなら%1になるんじゃないかと思うんですが。

投稿2015/03/17 03:01

toaruhetare

総合スコア141

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

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

退会済みユーザー

退会済みユーザー

2015/03/18 05:15

ytgrsua4様 ご教示ありがとうございます。 RewriteRule ^○○○/index.php$ /○○○/%2? の「%2」の箇所を「%1」にし反応を見ましたが、 上手く動作しませんでした。
退会済みユーザー

退会済みユーザー

2015/03/21 00:20

無事URLは短縮される動きがありましたが今度は、 http://localhost//○○○○/?category=△△△△ というようにlocalhostのところに「/」が多く付いてしまいます。 mod_rewriteは以下のようにしています。 RewriteEngine On RewriteCond %{QUERY_STRING} (^|&)category=([^&]+)($|&) RewriteRule ^/○○○○/index.php$ /○○○○/%1?
toaruhetare

2015/03/21 01:15

こんにちは RewriteRule ^/○○○○/index.php$ /○○○○/%1? を RewriteRule ^○○○○/index.php$ ○○○○/%1? にすると動くと思うのですが。 もしくは RewriteRule ^/○○○○/index.php$ ○○○○/%1? かもしれません。
guest

0

うーん...いろいろおかしいんだけど、そもそもやろうとしていることに疑問があるなあ。

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

http://localhost/○○○/△△△△△
にする予定です。

これだけど、ふつう、逆じゃない?

http://localhost/○○○/△△△△△

http://localhost/○○○/index.php?category=△△△△△

に変換して、表では短いURLで見せておいて、内部的には下の形式でindex.phpに渡す、という感じにするんじゃないのかなあ。

投稿2015/03/16 22:54

chokojori

総合スコア971

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

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

退会済みユーザー

退会済みユーザー

2015/03/18 05:22

chokojori様 ご教示ありがとうございます。 下記の2つのURLともにトップ画面は見れます。 http://localhost/○○○/index.php http://localhost/○○○/ ◀短いURLでもトップは見れてます。 ここのURLに設置してあるリンクタグには下記の様に設置してます。 <a href="./index.php?category=△△△△△"> 現段階表では短いURLで見れてるようなので あとは内部的にパラメータを渡せるようmod_rewite設定すれば良いのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問