【Apache】mod_rewriteについて語るスレ (686レス)
1-

140
(1): 2005/08/05(金)23:22 ID:euh07aXu(1) AAS
こんばんは。ドメイン直下のディレクトリをキーに検索結果を
表示する書き換えを行いました。

RewriteRule ^([^/]+)/$ /search.cgi?key=$1 [L]

/hoge/ でアクセスすると search.cgi?key=hoge を返します。

続いて /hoge のようにディレクトリにスラッシュがない場合に、
スラッシュを補完しようと思って、以下のように書き換えると
無限ループを起こします。

RewriteRule ^([^/]+)$ /$1/ [R=301,L]
省1
141: 2005/08/25(木)01:01 ID:??? AAS
>>140
Apache はデフォルトで / 無しのリクエストに対して 301 を返し / を補完させるようになっている。
不要。
142: [ ] 2005/08/25(木)09:50 ID:??? AAS
例えば
http://***.com/~test/index.php?id=10

というURLを

http://***.com/~test/10.html

と言う風にするには

RewriteEngine on
RewriteRule ^/~test/([0-9A-Za-z)]+)\.html$ /~test/index.php?id=$1 [L]
省3
143
(5): 2005/08/25(木)15:27 ID:??? AAS
すみません、mod_rewrite で以下のような変換は可能でしょうか?

/a/1/b/2/c/3/d/4/e/5.html

/index.php?a=1&b=2&c=3&d=4&e=5

パラメータ数は、可変にしたいのですが・・・
144: 2005/08/27(土)18:47 ID:??? AAS
>>143
mod_rewriteじゃ難しいかもね。
145
(1): 2005/08/28(日)11:49 ID:??? AAS
>>143
これでどうよ。
俺のローカルでは動いたが。
RewriteEngine On

RewriteRule ^a/([0-9]+)/b/([0-9]+)/c/([0-9]+)/d/([0-9]+)/e/([0-9]+)\.html$
/index.php?a=$1&b=$2&c=$3&d=$4&e=$5 [L]

ちなみに、改行するなよ。
無保証でヨロ。
146
(1): 2005/08/28(日)12:31 ID:??? AAS
>>145
あんたいい奴だな。けど143の質問ちゃんと読んでないよ。

ある程度パラメータ数の上限を決めて、個数ごとに145みたいなRewriteRuleを
書くしかないと思う。>>143
147
(1): 2005/08/28(日)13:36 ID:??? AAS
RewriteRule ^(([a-z]/[0-9]/?)*)\.html$ /index.php/$1 [L]
とやってPHP側で $_SERVER['PATH_INFO'] を分解するくらいしか・・・
148: 2005/08/28(日)14:25 ID:??? AAS
不定個数のパラメータ名をインクリメントしていくのを
mod_rewrite の正規表現だけでやれと言われると確かに厳しい

mod_perl で PerlTransHandler あたりをフックしてちゃちゃっと書き換えるなら割と楽にできる
149
(1): 2005/08/28(日)16:29 ID:??? AAS
>>143 です。
いろいろレス感謝です。
パラメータの a、b、c・・・ は固定ではなく、他の文字に変わることが
あります。例えば、page、target などです。

>>146
やはりそれしかないでしょうか。
mod_rewrite でループ処理のような形でどうにか出来れば
いいかなと思ったのですが。

とりあえず、こんな感じのを沢山書こうとしています。
RewriteRule ^(.*)/(.*)/(.*)/(.*)\.html$ index.php?$1=$2&$3=$4 [L]
省1
150
(2): 147 2005/08/28(日)17:47 ID:??? AAS
>>149
そういや[N]があったな、忘れてた

RewriteRule ^([a-z0-9]+)/([a-z0-9]+)\.html index.php?$1=$2 [L,NC,QSA]
RewriteRule ^([a-z0-9]+)/([a-z0-9]+)/(.+)\.html $3.html?$1=$2 [N,NC,QSA]
151: 2005/08/28(日)19:23 ID:??? AAS
RewriteMap 使えば?
152
(1): 2005/08/29(月)21:53 ID:??? AAS
RewriteCond で OR な条件を指定する際に

RewriteCond %{HTTP_HOST} ^(apple|grape|orange)\.example\.com$

とするのと

RewriteCond %{HTTP_HOST} ^apple\.example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^grape\.example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^orange\.example\.com$

とする場合で、一般論としてどちらが高速でしょうか?
153: 2005/09/19(月)04:05 ID:??? AAS
>>152
正規表現を1回評価するのと3回評価するのとでは明らかに1回の方が早いので前者
154
(1): 2005/09/27(火)17:41 ID:??? AAS
RewriteRule ^(.*)$ /tmp/hoge.cgi [L]
としたときに、robots.txtなどのいくつかのファイルはスキップさせたいのですが
どのようにすれば良いのでしょうか?
155: 2005/09/30(金)19:04 ID:??? AAS
.htaccessスレから移動してきました。
質問があります。

URLエンコードを行って日本語等が%XYの形式になったURLを含んでいるとき、
RewriteRule ^([0-9A-Za-z%]+)$ test.php?keyword=$1
などとしても404エラーになってしまいます。(日本語がないときは通常通りです。)

ルールの記述が間違っているのでしょうか。
エラーにならない方法をご存知でしょうか。お願いします。
156: 2005/09/30(金)20:40 ID:??? AAS
>154
まずマニュアルを読んで、それから細かいところを質問する姿勢を見せる。
157
(1): 2006/01/15(日)15:53 ID:0othuuG9(1) AAS
XREAでは
RewriteRule ^(.*)\.html$ test.cgi?$1
でうまくいったのに、自分のサーバーでは漢字とひらがながリライトできない。

記述の問題じゃないかも。
158: 2006/01/15(日)16:02 ID:??? AAS
文字コードでしょ
159: 157 2006/01/16(月)01:32 ID:??? AAS
かも
まあ、Apache1.3から2にしたら、何の問題もなくリライトするようになったのでよしとする
1-
あと 527 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.423s*