[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 01/25 09:33 / Filesize : 120 KB / Number-of Response : 375
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【Apache】mod_rewriteについて語るスレ



1 名前:nobodyさん [02/06/11 19:29 ID:wH0rV3+D]
Apacheのモジュール『mod_rewrite』に関連するスレです。

基本的な内容は↓ページを読むこと。
japache.infoscience.co.jp/rewriteguide/
japache.infoscience.co.jp/japanese_1_3_6/manual/mod/mod_rewrite.html

それではマターリ逝きましょう。

96 名前:nobodyさん mailto:sage [05/02/06 15:54:47 ID:???]
>>95
.htaccess質問コーナー Part3
pc5.2ch.net/test/read.cgi/hp/1105439192/

97 名前:95 [05/02/19 16:09:31 ID:TAHykHoC]
>>96さま
すいません。そっちできいてもレスがなかったです。

どなたか教えていただけないでしょうか?


98 名前:nobodyさん mailto:sage [05/02/19 21:03:00 ID:???]
>>97
そっちのテンプレのサイトを見ればわかるのに何もせずに聞くからスルーされる

99 名前:nobodyさん mailto:sage [05/02/19 21:04:55 ID:???]
更に言うならわからんのならカッコつけることばかり考えずに
そのままのURLで書け

100 名前:nobodyさん [05/02/26 09:13:31 ID:LIYJX+3j]
#mod_rewrite
RewriteEngine on
RewriteRule ([^/]*)/?$ /index.php?cat=$1
RewriteCond %{REQUEST_URI} !/phpMyAdmin/(.*)$
RewriteCond %{REQUEST_URI} !/webmin/(.*)$
RewriteRule ([^/]*)/?$ /index.php?cat=$1 [L]

としているのですが、URIに「.php」または「.inc」の文字が含まれている場合は、
上記のmod_rewriteを無視する、というのはどう書けばいいのでしょうか?

よろしくお願いします。

101 名前:nobodyさん mailto:sage [05/02/26 11:47:37 ID:???]
>100
正規表現のお勉強はどこまで進んだの?

102 名前:100 [05/02/26 14:55:39 ID:LIYJX+3j]
正規表現がキモでしょうか?

#mod_rewrite
RewriteEngine on
RewriteRule ([^/]*)/?$ /index.php?cat=$1
RewriteCond %{REQUEST_URI} !/phpMyAdmin/(.*)$
RewriteCond %{REQUEST_URI} !/webmin/(.*)$
RewriteCond %{REQUEST_URI} !/\.php/$
RewriteCond %{REQUEST_URI} !/\.inc/$
RewriteRule ([^/]*)/?$ /index.php?cat=$1 [L]
とやってもうまくいかなかったもので、
(.phpで終わるURIにアクセスすると、
intermnal server error)になってしまうものでして


103 名前:nobodyさん mailto:sage [05/02/26 16:56:14 ID:???]
!/\.php/$ こういうのは !\.php とかに書き直せばいーじゃな〜い?

104 名前:100 [05/02/26 19:11:26 ID:LIYJX+3j]
>>103
下のようにやっても、example.com/phpinfo.php が表示できないです・・・・
#mod_rewrite
RewriteEngine on
RewriteRule ([^/]*)/?$ /index.php?cat=$1
RewriteCond %{REQUEST_URI} !/phpMyAdmin/(.*)$
RewriteCond %{REQUEST_URI} !/webmin/(.*)$
RewriteCond %{REQUEST_URI} !\.php
RewriteCond %{REQUEST_URI} !\.inc
RewriteRule ([^/]*)/?$ /index.php?cat=$1 [L]



105 名前:103 mailto:sage [05/02/26 19:25:22 ID:???]
RewriteCond がOR条件なら、末尾に [OR] じゃな〜い?

106 名前:100 [05/02/27 03:30:20 ID:XqwD1Bfz]
いや、phpMyAdminでもwebminでもなく、拡張子がphpとかincとか入ってないものだけ、
RewriteRule ([^/]*)/?$ /index.php?cat=$1 [L]
をやりたいので、AND条件だと思うのですが、、、勘違いしてます?

107 名前:103 mailto:sage [05/02/27 13:38:08 ID:???]
拡張子が .php で、且つ .inc という2つの拡張子を同時に持ち合わせている
ものが存在すれば確かに AND条件じゃな〜い?

108 名前:100 [05/02/27 18:48:34 ID:XqwD1Bfz]
なんか、問題をわけようかと思って、↓にしたら、だめでした、、
#mod_rewrite
RewriteEngine on

RewriteRule ^example.com$ example.com/ [R]
RewriteRule ^example.com/(.*)$ example.com/index.php/$1

とやると、
example.com/hoge
が404 not foundになってしまいます。

自分の意図としては、
example.com/index.php/hoge
と解釈され、
index.phpのなかで$_SERVER['PATH_INFO'](この例だと「/hoge」)を
操作したいのですが・・・


109 名前:nobodyさん mailto:sage [05/02/28 01:06:50 ID:???]
AcceptPathInfo On

110 名前:nobodyさん [05/03/04 03:42:48 ID:3xlEv0k9]
#mod_rewrite
RewriteEngine on

RewriteCond $0 !^/index\.php
RewriteRule ^.*$ /index.php$0

RewriteCond %{REQUEST_URI} !^/phpMyAdmin(.*)$
RewriteCond %{REQUEST_URI} !\.txt$
RewriteCond %{REQUEST_URI} !\.wml$
RewriteCond %{REQUEST_URI} !\.hdml$
RewriteCond %{REQUEST_URI} !\.html$
RewriteCond %{REQUEST_URI} !\.xhtml$
RewriteCond %{REQUEST_URI} !\.php$
RewriteCond %{REQUEST_URI} !\.inc$
RewriteCond %{REQUEST_URI} !\.html$
RewriteCond %{REQUEST_URI} !\.txt$
#RewriteCond %{REQUEST_URI} !\.gif$
#RewriteCond %{REQUEST_URI} !\.jpg$
#RewriteCond %{REQUEST_URI} !\.jepg$
#RewriteCond %{REQUEST_URI} !\.bmp$
#RewriteCond %{REQUEST_URI} !\.png$

RewriteRule ^example.com$ example.com/ [R]
RewriteRule ^example.com/(.*)$ example.com/index.php/$1

ってやったら、/phpinfo.php(なかみはphpinfo関数のみ)が
RewriteRule ^example.com/(.*)$ example.com/index.php/$1にひかかかってしまいます。
どこが問題なのでしょうか?
あと、gifに対しては、上記の記述でただしいのでしょうか?

111 名前:110 [05/03/04 04:52:45 ID:3xlEv0k9]
まちがえました。これです。で、ちと質問かえさせてください。
下記で、example.com/admin/にアクセスすると、
RewriteCond %{REQUEST_URI} "!/admin" にひっかかって、URL書き換えはおきないはずなのですが、
なぜか起きてしまってます。どなたか教えていただければ幸いです。
#mod_rewrite
RewriteEngine on

RewriteCond %{REQUEST_URI} "!/phpMyAdmin"
RewriteCond %{REQUEST_URI} "!/webmin"
RewriteCond %{REQUEST_URI} "!/admin"
RewriteCond %{REQUEST_URI} "!/client"
RewriteCond %{REQUEST_URI} !\.js$
RewriteCond %{REQUEST_URI} !\.css$
RewriteCond %{REQUEST_URI} !\.txt$
RewriteCond %{REQUEST_URI} !\.wml$
RewriteCond %{REQUEST_URI} !\.hdml$
RewriteCond %{REQUEST_URI} !\.html$
RewriteCond %{REQUEST_URI} !\.xhtml$
RewriteCond %{REQUEST_URI} !\.php$
RewriteCond %{REQUEST_URI} !\.inc$
RewriteCond %{REQUEST_URI} !\.html$
RewriteCond %{REQUEST_URI} !\.txt$
RewriteCond %{REQUEST_URI} !\.gif$
RewriteCond %{REQUEST_URI} !\.jpg$
RewriteCond %{REQUEST_URI} !\.jepg$
RewriteCond %{REQUEST_URI} !\.bmp$
RewriteCond %{REQUEST_URI} !\.png$

RewriteCond $0 !^/index\.php
RewriteRule ^.*$ /index.php$0
RewriteRule ^example.com$ example.com/ [R]
RewriteRule ^example.com/(.*)$ example.com/index.php/$1

112 名前:nobodyさん mailto:sage [05/03/11 14:08:18 ID:???]
RewriteEngine On
RewriteCond %{REMOTE_HOST} !\.jp$ [NC,OR]
RewriteCond %{REMOTE_HOST} !\.bbtec\.net$ [NC,OR]
RewriteCond DUMMY CONDITION
RewriteRule index\.html$ - [F]

こんなかんじでJPドメインとY!BB以外はindex.htmlにアクセスできないようにしているのだけど、
.comなどの禁止されているドメインでアクセスすると403のページには飛ぶけど、
ステータスは200なようなのです。
403を返したいのですが、どう書けばいいでしょうか?

14:01:24 nfo>Winsock 2.2
14:01:36 suc>sample.infoが見つかりました
14:01:36 suc>sample.info(255.255.255.0):80にconnect成功しました
14:01:36 rtn>サーバへリクエスト送信
14:01:36 cmd>GET /index.html HTTP/1.0
14:01:36 cmd>Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
14:01:36 cmd>Accept-Charset: iso-8859-1,*,utf-8
14:01:36 cmd>Accept-Encoding: gzip
14:01:36 cmd>Accept-Language: en, ja
14:01:36 cmd>Connection: close
14:01:36 cmd>Host: sample.info
14:01:36 cmd>User-Agent: Mozilla/4.05 [en] (Win95; I)
14:01:36 rtn>サーバからのレスポンス
14:01:36 res>HTTP/1.1 200 OK
14:01:36 res>Date: Fri, 11 Mar 2005 05:01:40 GMT
14:01:36 res>Server: Apache/1.3.33 (Unix)
14:01:36 res>Content-Type: text/html;charset=Shift_JIS
14:01:36 res>Content-Length: 2260
14:01:36 res>Connection: close
14:01:36 nfo>sample.infoから切断します

113 名前:nobodyさん mailto:sage [05/03/11 15:40:36 ID:???]
RewriteRule ~([^/])+/([^/]) ?p=$1&q=$2
なら動くんですけど
RewriteRule ~([^/])+/([^/])/([^/]) ?p=$1&q=$2&m=$3
となるとサーバーが見つかりませんになります。
試行錯誤した結果、$nのnが3以上のものでこうなることがわかったのですが、
このようになる制限はあるのですか?ローカルではエラーがでないのに
XREAに置いたとたんエラーがでるようになりました。

114 名前:nobodyさん [05/03/12 17:48:37 ID:dOpkRpqt]
独り言です。apache2.0でのことです。
apacheの./configureで--enable-module=allにしていてhttpd2.0にmod_rewriteをDSOで組み込みたい↓

httpd -lでmod_so.cが入ってることを確認。
mod_rewrite.cがあるディレクトリに移動
#/usr/local/apache2/bin/apxs -c mod_rewrite.c
#/usr/local/apache2/bin/apxs -i -a -n rewrite mod_rewrite.la
2行目のコマンドで.soファイルがないと言われるので、同ディレクトリで
#gcc -shared -o mod_rewrite.so mod_rewrite.o -Wc,-Wall -L/usr/local/lib -Llib
で無理やり.soファイル作成。あとはできた.soファイルをapacheのmoduleにcpしてconfファイルに
LoadModuleの行を追加。apache再起動→完璧



115 名前:age [05/03/12 17:51:23 ID:dOpkRpqt]
↑続き。
これで1日半潰しました。悩んでる人、参考にしてちょ。
httpdの2.0だとAdd_Moduleの行はいらないのかしら?
いらなくて動いたんだけど、、、。

116 名前:nobodyさん mailto:sage [2005/03/21(月) 09:28:11 ID:???]
>>113
XREAのサポ板になんか書かれてた記憶がある

>>115
2からはAdd_Moduleがなくても問題ないよ

117 名前:nobodyさん [2005/03/22(火) 19:14:14 ID:P/+BRSxP]

nn

118 名前:nobodyさん [2005/03/22(火) 19:22:05 ID:P/+BRSxP]

なんかわからんなー。

httpd.conf内に、

RewriteEngine On
RewriteRule ^/cgi/([0-9A-Za-z]+)/([0-9A-Za-z]+)/$ /cgi/$1.cgi?com=$2 [L]


上記のように記述してみたが、思うような動作せず(リダイレクトはするが、$2の引数がうまくいかず)。
で、記述内容を変えてみたんだが、どうも反映されていない・・・。
さらに、コメントアウトしてみたが、おもいっきりリダイレクトしてるし???

ザット、ググッてみるものの情報みつからず、
誰か助けて。

119 名前:nobodyさん mailto:sage [2005/03/23(水) 04:33:05 ID:???]

自己レス

まず、あまり深く追いかけていないんだが、
MultiViews が、なんやら影響をおよぼしている様子・・・。

後、つくづく自分が情けなくなるが、
下記の中の正規表現で、[0-9A-Za-z]としているにもかかわらず、
ファイル名に、'_'使っているし・・・。

> RewriteEngine On
> RewriteRule ^/cgi/([0-9A-Za-z]+)/([0-9A-Za-z]+)/$ /cgi/$1.cgi?com=$2 [L]

以上2点修正して、意図する動作となりました。
とりあえず、解決。

120 名前:nobodyさん mailto:sage [2005/03/25(金) 17:06:25 ID:???]
さくらの鯖では
使えません!

鬱...

121 名前:nobodyさん mailto:sage [2005/03/25(金) 17:52:59 ID:???]
>>120
4月6日から使えます

122 名前:nobodyさん mailto:sage [2005/03/25(金) 22:35:34 ID:???]
>>121
そうみたいですね。
待ち望んでいた日が遂に...
って感じです。

123 名前:nobodyさん [2005/03/26(土) 13:01:03 ID:2ysQFKh3]
すみませんが...

hoge.com/hoge/xxxxx
hoge.com/hoge/test.cgi?xxxxx
までは、
RewriteEngine on
RewriteRule (.+)$ test.cgi?$1 [L]
で実現できましたが、
hoge.com/hoge/xxxxx?zzzzz
hoge.com/hoge/test.cgi?xxxxx?zzzzz
や%2Fなどができません。
(test.cgiは、$ENV{'QUERY_STRING'}で取ってるから対応しています。)

どうかお力を貸してください...

124 名前:nobodyさん mailto:sage [2005/03/27(日) 12:31:30 ID:???]
>>123
.htaccess質問コーナー Part3
pc5.2ch.net/test/read.cgi/hp/1105439192/



125 名前:nobodyさん mailto:sage [2005/03/31(木) 15:39:06 ID:???]
ヒント:$ENV{'REQUEST_URI'}

126 名前:nobodyさん mailto:age [2005/04/10(日) 14:34:04 ID:???]
さくらの共用スタンダードで
XOOPSでつくるサイトを
静的に見せる方法が分からない。

プログラム全くの素人だけど
でも、XOOPSで検索エンジンに引っかかるサイトが
作りたいわけなんだけど...

グーグルで調べてみたけど、
mod_rewrite使う方法だということが分かったが
どういうところを編集するのが分からんわけで。

127 名前:nobodyさん mailto:sage [2005/04/10(日) 14:39:45 ID:???]
ええけつしとるのぉ(*´Д`)ハァハァ
219.57.24.78/
219.57.24.78/~ss.jpg
OMOIKANE/
OMOIKANE/~ss.jpg


128 名前:nobodyさん [2005/05/09(月) 23:38:57 ID:rb2ewZOk]
WIN版のApache 1.3.33 です。

同一ホスト内だと問題ないんですが、書き換え先を外のドメインにするとうまくいきません。


AAA.com/hoge.html をクリックしたときに表示される内容は別ドメインにおいてある

BBB.com/hoge.html

にしたいのですが、Apacheが locationヘッダを吐くのでリダイレクトとなってしまいブラウザに

BBB.com/hoge.html

が表示されてしまいます。

下記の記述でなにがまずいのでしょうか? よろしくお願いします


RewriteEngine on
RewriteRule /(.*)$ BBB.com/$1 [L]


129 名前:nobodyさん [2005/05/10(火) 00:13:28 ID:0h89RmHc]
ZD218022.ppp.dion.ne.jp/
うぇwwwwwwwwwうはっwwwっおkwwwうぇwww
うはっwwwっうぇうぇwwwうぇwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww

130 名前:nobodyさん mailto:sage [2005/05/10(火) 07:33:24 ID:???]
>>128
http上ドメイン名が変われば(別のhttpサーバに変えるには)リダイレクトしないと無理でしょう
コレは無理 ブラウザ->Apache(1)->Apache(2)->ブラウザ

131 名前:nobodyさん [2005/05/10(火) 18:19:16 ID:GC3gP9kT]
>>130
ありがとうございます。やはり駄目みたいですね。
mod_proxyかませるしかないか・・・

132 名前:nobodyさん [2005/06/02(木) 00:10:54 ID:7p4TKpYJ]
DirectoryIndex hoge.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Za-z]+)/([0-9A-Za-z)]+)\.html$ hoge.php?var1=$1&var2=$2 [L]

------------------------------------------------------------------------------

...../test1/test2.html という仮想アドレスにアクセスしてきた
ユーザに対して、hoge.php?var1=test1&var2=test2
の結果を返したいので、上記のように.htaccessに書きましたが、
..../test2/test2.htmlにアクセスするとページがありませんエラーに
なります。他鯖だとこれでOKなのですが、さくらという鯖だと無理です。
さくら特有の何か?があるのか。上のような簡単なものでも
アパッチのバージョンが違うと、動作しない。なんてことがあるのでしょうか?


エロイ人、どうか教えて下さい。

133 名前:nobodyさん mailto:sage [2005/06/02(木) 06:47:17 ID:???]
([0-9A-Za-z)]+


134 名前:132 [2005/06/02(木) 20:34:15 ID:7p4TKpYJ]
Apache/1.3.33 Server
ですが、どうもうまくうごきません。

>>133
ありがとうございます。
そのようにやってみましたが、ダメみたいです。

さくらというレンタル鯖は
同じサイトでも2つのアドレスがあります。

一つは独自ドメイン。
もう一つは http://○○.sakura.ne.jp/というアドレスです。
こういうことも関係してエラーになるんだろうか・・・



135 名前:nobodyさん [2005/07/05(火) 01:22:50 ID:netfphaS]
通常の使い方とは逆に、

search.cgi?dir=hoge&file=foo

のようなパラメータ付きのURLを

/hoge/foo/

のように書き換えたいんですが、これではうまくいきません。

RewriteRule ^search\.cgi\?dir=(.*)&file=(.*)$ /$1/$2/

いろいろ試しても ? が出てきた時点でマッチしないように思います。
ご存知の方、ぜひご教示お願い致します。

136 名前:nobodyさん mailto:sage [2005/07/05(火) 23:37:37 ID:???]
ルールの左右逆じゃね?


137 名前:135 mailto:sage [2005/07/06(水) 01:13:05 ID:???]
>>136
はい、通常のmod_rewrite利用法とは逆の書き換えを
実現したいんです。

/hoge/foo/ を search.cgi?dir=hoge&file=foo みたいな
書き換えはきちんと動作するサーバ環境です。

気長にお待ちしております。

138 名前:nobodyさん [2005/07/15(金) 10:24:40 ID:yoPQBliE]
hogehoge/?123

hogehoge/123

に書き換えたいのですが、?に正規表現設定をマッチさせることができません。
ご教授願います。

139 名前:nobodyさん mailto:sage [2005/07/16(土) 10:25:48 ID:???]
>>138
\?じゃないの?

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

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

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

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

RewriteRule ^([^/]+)$ /$1/ [R=301,L]

どう記述したら良いでしょうか。ご教示お願いいたします。

141 名前:nobodyさん mailto:sage [2005/08/25(木) 01:01:54 ID:???]
>>140
Apache はデフォルトで / 無しのリクエストに対して 301 を返し / を補完させるようになっている。
不要。

142 名前:nobodyさん mailto:  [2005/08/25(木) 09:50:51 ID:???]
例えば
***.com/~test/index.php?id=10

というURLを

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

と言う風にするには

RewriteEngine on
RewriteRule ^/~test/([0-9A-Za-z)]+)\.html$ /~test/index.php?id=$1 [L]

と書けばいいんですよね?しかし、表示されません・・。
リダイレクトとか他のアクションの場合は動くので、サーバやmod_rewriteに
問題があるとは考えられません・・。書き方がおかしいのでしょうか?

143 名前:nobodyさん mailto:sage [2005/08/25(木) 15:27:54 ID:???]
すみません、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 名前:nobodyさん mailto:sage [2005/08/27(土) 18:47:47 ID:???]
>>143
mod_rewriteじゃ難しいかもね。



145 名前:nobodyさん mailto:sage [2005/08/28(日) 11:49:42 ID:???]
>>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 名前:nobodyさん mailto:sage [2005/08/28(日) 12:31:26 ID:???]
>>145
あんたいい奴だな。けど143の質問ちゃんと読んでないよ。

ある程度パラメータ数の上限を決めて、個数ごとに145みたいなRewriteRuleを
書くしかないと思う。>>143

147 名前:nobodyさん mailto:sage [2005/08/28(日) 13:36:40 ID:???]
RewriteRule ^(([a-z]/[0-9]/?)*)\.html$ /index.php/$1 [L]
とやってPHP側で $_SERVER['PATH_INFO'] を分解するくらいしか・・・

148 名前:nobodyさん mailto:sage [2005/08/28(日) 14:25:19 ID:???]
不定個数のパラメータ名をインクリメントしていくのを
mod_rewrite の正規表現だけでやれと言われると確かに厳しい

mod_perl で PerlTransHandler あたりをフックしてちゃちゃっと書き換えるなら割と楽にできる

149 名前:nobodyさん mailto:sage [2005/08/28(日) 16:29:14 ID:???]
>>143 です。
いろいろレス感謝です。
パラメータの a、b、c・・・ は固定ではなく、他の文字に変わることが
あります。例えば、page、target などです。

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

とりあえず、こんな感じのを沢山書こうとしています。
RewriteRule ^(.*)/(.*)/(.*)/(.*)\.html$ index.php?$1=$2&$3=$4 [L]
RewriteRule ^(.*)/(.*)\.html$ index.php?$1=$2 [L]

150 名前:147 mailto:sage [2005/08/28(日) 17:47:22 ID:???]
>>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 名前:nobodyさん mailto:sage [2005/08/28(日) 19:23:03 ID:???]
RewriteMap 使えば?

152 名前:nobodyさん mailto:sage [2005/08/29(月) 21:53:41 ID:???]
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 名前:nobodyさん mailto:sage [2005/09/19(月) 04:05:03 ID:???]
>>152
正規表現を1回評価するのと3回評価するのとでは明らかに1回の方が早いので前者

154 名前:nobodyさん mailto:sage [2005/09/27(火) 17:41:19 ID:???]
RewriteRule ^(.*)$ /tmp/hoge.cgi [L]
としたときに、robots.txtなどのいくつかのファイルはスキップさせたいのですが
どのようにすれば良いのでしょうか?



155 名前:nobodyさん mailto:sage [2005/09/30(金) 19:04:43 ID:???]
.htaccessスレから移動してきました。
質問があります。

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

ルールの記述が間違っているのでしょうか。
エラーにならない方法をご存知でしょうか。お願いします。

156 名前:nobodyさん mailto:sage [2005/09/30(金) 20:40:28 ID:???]
>154
まずマニュアルを読んで、それから細かいところを質問する姿勢を見せる。



157 名前:nobodyさん [2006/01/15(日) 15:53:40 ID:0othuuG9]
XREAでは
RewriteRule ^(.*)\.html$ test.cgi?$1
でうまくいったのに、自分のサーバーでは漢字とひらがながリライトできない。

記述の問題じゃないかも。

158 名前:nobodyさん mailto:sage [2006/01/15(日) 16:02:20 ID:???]
文字コードでしょ

159 名前:157 mailto:sage [2006/01/16(月) 01:32:31 ID:???]
かも
まあ、Apache1.3から2にしたら、何の問題もなくリライトするようになったのでよしとする

160 名前:nobodyさん mailto:sage [2006/01/20(金) 03:14:31 ID:???]
ちょっと質問です。
なぜか"."(ドット)を使うと404になるのですが、回避する方法はないものでしょうか?

こっちだと動かないんだけど、
shinehage.com/072.sexshinehage.com/index.cgi?072.sex
こっちだと動く
shinehage.com/072-sexshinehage.com/index.cgi?072-sex

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Za-z]+\.[0-9A-Za-z]+)$ index.cgi?$1 [L]
↑これではダメで、

↓こっちだと動く・・・
RewriteRule ^([0-9A-Za-z]+\-[0-9A-Za-z]+)$ index.php?$1 [L]

161 名前:nobodyさん mailto:sage [2006/01/20(金) 12:45:18 ID:???]
ログ見るのがはやいんじゃ?

162 名前:nobodyさん mailto:sage [2006/01/31(火) 13:32:42 ID:???]
mod_rewriteとpath_infoってどっちの方がいいのかな?

163 名前:nobodyさん [2006/03/08(水) 21:55:04 ID:F0LiHM5T]
RewriteEngine on
RewriteBase /hogehoge
RewriteRule ^hoge/([^/]+)/$ ho.php?user=$1 [L]

とした場合、/hoge/username/?page=2 といった感じで引数userのほかに引数pageを読み込ませるにはどうしたらいいのでしょうか?

164 名前:nobodyさん mailto:sage [2006/03/09(木) 08:30:08 ID:???]
>>163
RewriteRule ^hoge/([^/]+)/$ ho.php?user=$1&%{QUERY_STRING} [L]




165 名前:nobodyさん [2006/03/10(金) 01:49:51 ID:wS29C68G]
エロ屋やアマゾンとかで
/-/detail/=/
とかいうURLがあるけどあれもmod_rewrite?
ハイフンとかなんか意味あるのかな

166 名前:nobodyさん mailto:age [2006/03/13(月) 12:10:05 ID:???]

RewriteEngine on
RewriteRule ^/dir/hoge/([0-9]+).html$ /dir/hoge.php?id=$1

として/dir/hoge/nn.htmlのアクセスを/dir/hoge.php?id=nnに
rewriteし、/dir/hoge.phpは動作するのですがQUERY_STRINGのid=nnが
hoge.phpに渡りません。なにかRewriteRuleの書き方におかしな点が
ありますでしょうか?

167 名前:nobodyさん mailto:age [2006/03/13(月) 12:14:32 ID:???]
↑申し遅れました。CentOS3.4+Apache1.3.33、ちなみにphp4.4.2です

168 名前:nobodyさん mailto:sage [2006/03/13(月) 12:24:24 ID:???]
>>166
もちろん実際のnnは数字でここではサンプルとしてnnと書いたんだよね

169 名前:nobodyさん mailto:age [2006/03/13(月) 13:19:52 ID:???]
そうです。nnは数字です。
ちなみにhoge.phpで参照できる'REQUEST_URI'は
ブラウザ送信された/dir/hoge/nn.htmlがそのまま来ますので
hoge.php側で何とかできそうですが、
腑に落ちないのとhoge.phpを変更したくないので
設定に落度があるのならそれで解決したいと考えています。
よろしくお願いします。

170 名前:nobodyさん mailto:sage [2006/03/13(月) 13:33:00 ID:???]
>>166
>>164

171 名前:nobodyさん mailto:age [2006/03/13(月) 14:37:04 ID:???]
166です。
よくわからなくなってきました。
RewriteEngineとRewriteRuleをコメントにしても
/dir/hoge/nn.htmlでhoge.phpが呼び出されます。
別の次元でRewriteRuleが効いているようですが
心当たりなしでパニック中。


172 名前:nobodyさん mailto:sage [2006/03/13(月) 15:23:36 ID:???]
>>171
落ち着いて access_log

173 名前:nobodyさん [2006/03/25(土) 15:58:49 ID:rUjENMuu]
通常ポートのSSLのhttp→httpsへのリダイレクトはうまくいったのですが、
別ポートにもう一つ設置した445ポートの場合、

www.example.com:445/

https://www.example.com:445/

にリダイレクトしたいのですが、RewriteRuleとRewriteRuleを
どのように書いたらいいでしょうか?

174 名前:nobodyさん mailto:sage [2006/04/06(木) 05:28:11 ID:???]
パラメーターに&が入ったときのmod_rewriteについて質問です・・
問題をvar_dumpを使って入ってきたパラメーターだけを表示するプログラムtest.phpにまとめてみました。
あと私のところで使ってる文字コードはUTF-8

<?
var_dump($_SERVER["QUERY_STRING"]);
echo "<br>\n";
var_dump($_GET);

$param = urlencode("coffee&tea");
$directUrl = "hoge.go.jp/test.php?keyword=". $param;
$rewriteUrl = "hoge.go.jp/". $param. "/";

echo "<br>\n";
echo "case 1 <a href=\"". $directUrl ."\">direct_url</a><br>\n";
echo "case 2 <a href=\"". $rewriteUrl ."\">rewrite_url</a><br>\n";
?>


で、.htaccessはこんな感じ
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^/(.*)/$
RewriteRule ^(.*)/$ /test.php?keyword=$1 [L]



175 名前:nobodyさん mailto:sage [2006/04/06(木) 05:28:46 ID:???]
case1のdirect_urlの場合hogehoge.go.jp/test.php?keyword=coffee%26teaを生成。
そのURL(自分自身なわけだけど)に飛ぶと以下の文字列を吐き出す
string(20) "keyword=coffee%26tea"
array(1) { ["keyword"]=> string(10) "coffee&tea" }
これはOK。これにrewriteを噛ましたい。


問題のcase 2、rewrite_urlの場合hoge.go.jp/coffee%26tea/を生成。
飛ぶとmod_rewrite補足され、変換される。以下ログから抜粋
(3) [per-dir /var/www/hoge.go.jp/] applying pattern '^(.*)/$' to uri 'coffee&tea/'
(4) RewriteCond: input='/coffee&tea/' pattern='^/(.*)/$' => matched
(2) [per-dir /var/www/hoge.go.jp/] rewrite coffee&tea/ -> /test.php?keyword=coffee&tea
(3) split uri=/test.php?keyword=coffee&tea -> uri=/test.php, args=keyword=coffee&tea

そのURLに飛ぶと以下の文字列を吐き出す
string(18) "keyword=coffee&tea"
array(2) { ["keyword"]=> string(6) "coffee" ["tea"]=> string(0) "" }

%26がmod_rewriteで&にデコードされちゃってteaが引数名になっちゃうよ・・・
対策法ご存知の方教えてください・・・あるいはどこか設定が悪いのか・・・

176 名前:nobodyさん mailto:sage [2006/04/06(木) 08:11:14 ID:???]
>>175
$rewriteUrl = "hoge.go.jp/". urlencode($param). "/";


177 名前:nobodyさん mailto:sage [2006/04/06(木) 08:59:39 ID:???]
>>176
あー、なるほど、mod_rewriteにはurlencodeを2重に仕込むのね。
mod_rewriteを延々と弄っててきがつかんかった。
確認取ったところ上手く動きました。
この方法でやってみます。サンクス。

しかしmod_rewrite側での対応は設定はやはり難しいのかなぁ・・・
PHPに入ってくるエンコード状態と出て行くエンコード状態がrewrite使う使わずに関わらず
同じであれば見通しがいいかなーとか思ってたので。

178 名前:nobodyさん [2006/04/22(土) 02:52:49 ID:IkBNOhRq]
フラグのQSAは、マニュアルに

>このフラッグは、置き換えるのではなく、存在するものに対して、
>rewrite エンジンが代用文字列にあるクエリー文字列にアペンドするようにします。
>rewite ルールでクエリー文字列にデータを追加したいときに使ってください。

とあるのですが、実挙動としてどのようになるのか、よくわかりません。
いったいどうなるのでしょうか?


179 名前:nobodyさん mailto:sage [2006/04/22(土) 13:58:50 ID:???]
>178
読んで字の如くそうなる。

180 名前:nobodyさん mailto:sage [2006/04/23(日) 02:46:10 ID:???]
いや、だからその、言葉の意味がわかにくいので・・・
実挙動としてどうなるのか、サンプルなどがあるとわかりやすいんですけど、、


181 名前:nobodyさん [2006/04/24(月) 11:05:56 ID:Z/7vX4oM]
/hoge/modname/ReserveForm.do

/hoge/modname/index.php?ReserveForm

といった感じにrewriteしたいのですが、どうもうまくいきません。
RewriteRule !hoge/([^/]+/)ReserveForm\.do $1/index.php
とやるだけで、internalエラー(無限ループ)になります。

modnameの部分を$1に置換するにはどうやればいいのでしょうか。

182 名前:nobodyさん mailto:sage [2006/04/24(月) 12:34:14 ID:???]
>>181
modnameを置換する必要はないようだけど例文の間違いですか

183 名前:nobodyさん mailto:sage [2006/06/12(月) 02:24:24 ID:???]
>>143 みたいなことしたいのですけど、やはり決定的な方法ってありませんかね。。。


184 名前:nobodyさん mailto:sage [2006/06/12(月) 05:04:50 ID:???]
>>150 に書いてありましたね。。。
すみません。。。



185 名前:nobodyさん [2006/06/15(木) 09:05:30 ID:p9raRrGD]
Apache1.3.3, Win2000SP2で、バーチャルホストでMovableTypeを運用してます。

Tagを、domain.tld/tags/tagname
という形で作れるようにできたまではいいのですが、
as-is.net/blog/archives/001020.html を参考に .htaccessに

RewriteEngine on
RewriteRule ^tags/(.*)$ /cgi-bin/mt/mt-xsearch.cgi?blog_id=2&search_key=Tagwire&delimiter=,&search=$1 [QSA,L]

と指定してるのですが404エラーが出てしまいます。

実際に飛んでほしい先は
domain.tld/cgi-bin/mt/mt-xsearch.cgi?blog_id=2$search_key=Tagwire&delimiter=,$search=tagname
です。

RewriteRule aaa.html bbb.html
などと実際に存在するbbb.htmlに向けてaaa.htmlを呼び出してテストすると表示されますので
mod_rewrite自体は動いてます。

見直す点等アドバイスいただければ幸いです。

186 名前:185 mailto:sage [2006/06/15(木) 09:07:01 ID:???]
すみません、タイプミスありました。

実際に飛んでほしい先は
domain.tld/cgi-bin/mt/mt-xsearch.cgi?blog_id=2$search_key=Tagwire&delimiter=,&search=tagname
です。

187 名前:nobodyさん [2006/06/24(土) 20:11:15 ID:usPjod1h]
www.hogehoge.comhogehoge.com/main/
に書き換えたいのですが、
どうすればいいのですか?


188 名前:nobodyさん mailto:sage [2006/06/25(日) 09:19:26 ID:???]
RewriteRule ^$ hogehoge.com/main/

189 名前:nobodyさん mailto:apache [2006/07/29(土) 17:15:32 ID:???]
こんなことをしたいのですが、500 Internal Server Errorになります。
httpdはRHEL3のインストーラーにしたがって、そのままインストールしました。

www.domain.com/http://www.google.co.jp

RewriteEngine on
RewriteRule (..*) $1 [L]

www.google.co.jp

アドバイスをお願いします。

190 名前:nobodyさん mailto:sage [2006/08/01(火) 20:44:39 ID:???]
>>189
R オプションでリダイレクトじゃまいか?
[R,L]

191 名前:nobodyさん mailto:sage [2006/08/07(月) 16:21:58 ID:???]
JVNVU#395412
Apache httpd の mod_rewrite モジュールにおけるバッファオーバーフローの脆弱性
ttp://jvn.jp/cert/JVNVU%23395412/index.html

何が悪かったの?

192 名前:nobodyさん [2006/08/19(土) 09:19:31 ID:AnvEHxgI]
鯖は逆引き設定にしてあります。
逆引きできない人を別アドレスへ飛ばしたいのですが
「REMOTE_HOSTが数字だけの時」という条件はどう書けばいいでしょうか?

またproxy接続の人をmod_rewriteだけでなるべく効果的に(完全でなくてもいい)
別アドレスへ飛ばしたいのですがどの環境変数にRewriteCondをどう書けばいいでしょうか?
初心者ですがよろしくお願いします。

193 名前:nobodyさん [2006/08/29(火) 18:50:13 ID:qBkjqVym]
example.com/hogehoge を
example.com/?hogehoge
にリダイレクトさせるために、.htaccessに
RewriteEngine on
RewriteRule ^(.+)$ /?$1 [L]
と書いたのですが、500エラー出てうまくいきません。
アドバイスお願いします・・・

194 名前:nobodyさん [2006/09/05(火) 21:59:51 ID:Hy3lSiWg]
質問です。

使っているサーバーにて、サーバー管理人さんにmod_rewriteをONにしてもらったのですが、
きちんと動作することを確認するサンプルphpや.htaccessをご存知ないですか?

サーバー管理人さんが忙しいようでなかなか連絡がつきません、
どうにか動作確認をしたいのですが。。。



195 名前:nobodyさん mailto:sage [2006/09/05(火) 23:49:05 ID:???]
>>194
動作確認の方法もわからずにそんなことをしてどうするつもりだ?

196 名前:nobodyさん [2006/09/05(火) 23:53:40 ID:Hy3lSiWg]
>>195
とあるCMSプラグインを説明書に従ってインストールします。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<120KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef