人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

URLの加工で悩んでいます。

現在、PHPでサイトを制作していましています。

URLをHTML表示にしようと思い、htaccessを下記のように記述して試しています。


RedirectMatch 301 ^([^.]*[^/])$ $0/
RewriteEngine on
RewriteRule ^([0-9A-Za-z)]+)¥/$ test.php?hensu=$1 [L]

問題というのが、上記の設定だと「 http://test.com/$1/」という形で表示できるのですが、

同一フォルダ内のフォルダがエラーとなって見れなくなってしまいます。

http://test.com/abc/

上記のabcというフォルダがあるのですが、abcを変数と読まれて悩んでいます。

うまく説明できないのですが、分かる方回答お願いします。

●質問者: black_kenchan
●カテゴリ:コンピュータ
✍キーワード:ABC HTML ON PHP test
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● kimizu
●0ポイント

http://www.net-newbie.com/trans/mod_rewrite.html

Apache module mod_rewrite

すみません。何度か質問を読んだのですが、

理解できませんでした。


「具体的に、XXXというアクセスがあったら、

YYYにアクセスさせたい」という書き方のほうが

解りやすそうです。

http://www.hatena.ne.jp/1125239943

人力検索はてな - <mod_rewriteの書き方> 例えば、http://www.AAA.com/ にアクセスした際に http://AAA.com (wwwなし)にリダイレクトするように mod_rewrite を使って設定するには、具体的..

過去にこんな質問が出ていたみたいです。

こちらも参考にどうぞ。

◎質問者からの返答

すいません。質問が分かりにくかったですね。。

例えば、 http://test.com の中に

test.php と info というディレクトリがあるとして、

infoにアクセスするとしたら、

http://test.com/info/

でアクセスしますよね。

それで、test.phpをhtaccessを使ってHTML形式の/区切りで表示させるようにした場合、

http://test.com/×××/

という形になります。

そうすると、infoのディレクトリもスラッシュで区切られている為、 infoの部分が変数とみなされてしまい、

通常のinfoのトップが表示されなくなってしまうので、それを何とかしたいという感じです。

説明がうまく書けなくてすいません。


2 ● esecua
●0ポイント

http://hatena.ne.jp/

はてな

.htaccessでhttp://test.com/XXX/のXXX/はフォルダ指定ではなく引数読み込みのみだと指定してますので、いくらabcというフォルダにアクセスしたくともhttp://test.com/abc/ではアクセスできない形になっているかと思います。

◎質問者からの返答

こういう場合は、無理なのでしょうか・・・


3 ● tezcello
●0ポイント

http://www.sixapart.jp/movabletype/manual/mt31.html

Movable Type 3.2 マニュアル - Movable Type 3.1 の新機能

RewriteCond と組合わせると良いようです。

ディレクトリに対するアクセスは何もしない

ファイルへのアクセス(とみなされる)ものはルールで置き換えるという具合に。

具体的には、

RedirectMatch 301 ^([^.]*[^/])$ $0/

RewriteEngine on


RewriteCond %{REQUEST_FILENAME} !-d


RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([0-9A-Za-z)]+)¥/$ test.php?hensu=$1 [L]


こんな感じです。

とりあえず家のイントラサーバでは上手くいきましたよ。

http://japache.infoscience.co.jp/rewriteguide/

Apache URL Rewriting Guide

他にも色々出来るみたいです。

(まだ理解できていませんが)

◎質問者からの返答

一応試しましたが、やはりうまく出来ませんでした。


4 ● tezcello
●200ポイント

http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html

mod_rewrite

おかしいですね?こちらでは上手くいっているのに。

apache のバージョンの所為でしょうか。


もしも test.php がルートに無い場合はフルパスで書くなり、RewriteBase が必要ですが、大丈夫ですか?

あと、質問文をコピペしたんですけど、) を名前として許すとは思いにくいので

RewriteRule ^([0-9A-Za-z)]+)¥/$ test.php?hensu=$1 [L] は

RewriteRule ^([0-9A-Za-z]+)¥/$ test.php?hensu=$1 [L] ですね。

◎質問者からの返答

ありがとうございます。

出来ました。

質問に書かなかったのですが、

DirectoryIndex

を使用していてDirectoryIndexよりも前に記述したら出来ました。

本当に有難う御座いました。

また、機会があったら宜しくお願いします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ