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

128
(1): 2005/05/09(月)23:38 ID:rb2ewZOk(1) AAS
WIN版のApache 1.3.33 です。

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

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

外部リンク[html]:BBB.com

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

外部リンク[html]:BBB.com

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

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

RewriteEngine on
RewriteRule /(.*)$ 外部リンク:BBB.com [L]
129: 2005/05/10(火)00:13 ID:0h89RmHc(1) AAS
外部リンク:ZD218022.ppp.dion.ne.jp
うぇwwwwwwwwwうはっwwwっおkwwwうぇwww
うはっwwwっうぇうぇwwwうぇwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
130
(1): 2005/05/10(火)07:33 ID:??? AAS
>>128
http上ドメイン名が変われば(別のhttpサーバに変えるには)リダイレクトしないと無理でしょう
コレは無理 ブラウザ->Apache(1)->Apache(2)->ブラウザ
131: 2005/05/10(火)18:19 ID:GC3gP9kT(1) AAS
>>130
ありがとうございます。やはり駄目みたいですね。
mod_proxyかませるしかないか・・・
132
(1): 2005/06/02(木)00:10 ID:7p4TKpYJ(1/2) AAS
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
(1): 2005/06/02(木)06:47 ID:??? AAS
([0-9A-Za-z)]+
134: 132 2005/06/02(木)20:34 ID:7p4TKpYJ(2/2) AAS
Apache/1.3.33 Server
ですが、どうもうまくうごきません。

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

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

一つは独自ドメイン。
もう一つは http://○○.sakura.ne.jp/というアドレスです。
こういうことも関係してエラーになるんだろうか・・・
135
(1): 2005/07/05(火)01:22 ID:netfphaS(1) AAS
通常の使い方とは逆に、

search.cgi?dir=hoge&file=foo

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

/hoge/foo/

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

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

いろいろ試しても ? が出てきた時点でマッチしないように思います。
ご存知の方、ぜひご教示お願い致します。
136
(1): 2005/07/05(火)23:37 ID:??? AAS
ルールの左右逆じゃね?
137: 135 2005/07/06(水)01:13 ID:??? AAS
>>136
はい、通常のmod_rewrite利用法とは逆の書き換えを
実現したいんです。

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

気長にお待ちしております。
138
(1): 2005/07/15(金)10:24 ID:yoPQBliE(1) AAS
外部リンク:hogehoge

外部リンク:hogehoge

に書き換えたいのですが、?に正規表現設定をマッチさせることができません。
ご教授願います。
139: 2005/07/16(土)10:25 ID:??? AAS
>>138
\?じゃないの?
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]

どう記述したら良いでしょうか。ご教示お願いいたします。
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]

と書けばいいんですよね?しかし、表示されません・・。
リダイレクトとか他のアクションの場合は動くので、サーバやmod_rewriteに
問題があるとは考えられません・・。書き方がおかしいのでしょうか?
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]
RewriteRule ^(.*)/(.*)\.html$ index.php?$1=$2 [L]
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にしたら、何の問題もなくリライトするようになったのでよしとする
160: 2006/01/20(金)03:14 ID:??? AAS
ちょっと質問です。
なぜか"."(ドット)を使うと404になるのですが、回避する方法はないものでしょうか?

こっちだと動かないんだけど、
外部リンク[sex]:shinehage.com外部リンク[cgi]:shinehage.com
こっちだと動く
外部リンク:shinehage.com外部リンク[cgi]:shinehage.com

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: 2006/01/20(金)12:45 ID:??? AAS
ログ見るのがはやいんじゃ?
162: 2006/01/31(火)13:32 ID:??? AAS
mod_rewriteとpath_infoってどっちの方がいいのかな?
163
(1): 2006/03/08(水)21:55 ID:F0LiHM5T(1) AAS
RewriteEngine on
RewriteBase /hogehoge
RewriteRule ^hoge/([^/]+)/$ ho.php?user=$1 [L]

とした場合、/hoge/username/?page=2 といった感じで引数userのほかに引数pageを読み込ませるにはどうしたらいいのでしょうか?
164
(1): 2006/03/09(木)08:30 ID:??? AAS
>>163
RewriteRule ^hoge/([^/]+)/$ ho.php?user=$1&%{QUERY_STRING} [L]
165: 2006/03/10(金)01:49 ID:wS29C68G(1) AAS
エロ屋やアマゾンとかで
/-/detail/=/
とかいうURLがあるけどあれもmod_rewrite?
ハイフンとかなんか意味あるのかな
166
(2): [age] 2006/03/13(月)12:10 ID:??? AAS
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: [age] 2006/03/13(月)12:14 ID:??? AAS
↑申し遅れました。CentOS3.4+Apache1.3.33、ちなみにphp4.4.2です
168: 2006/03/13(月)12:24 ID:??? AAS
>>166
もちろん実際のnnは数字でここではサンプルとしてnnと書いたんだよね
169: [age] 2006/03/13(月)13:19 ID:??? AAS
そうです。nnは数字です。
ちなみにhoge.phpで参照できる'REQUEST_URI'は
ブラウザ送信された/dir/hoge/nn.htmlがそのまま来ますので
hoge.php側で何とかできそうですが、
腑に落ちないのとhoge.phpを変更したくないので
設定に落度があるのならそれで解決したいと考えています。
よろしくお願いします。
170: 2006/03/13(月)13:33 ID:??? AAS
>>166
>>164
171
(1): [age] 2006/03/13(月)14:37 ID:??? AAS
166です。
よくわからなくなってきました。
RewriteEngineとRewriteRuleをコメントにしても
/dir/hoge/nn.htmlでhoge.phpが呼び出されます。
別の次元でRewriteRuleが効いているようですが
心当たりなしでパニック中。
172: 2006/03/13(月)15:23 ID:??? AAS
>>171
落ち着いて access_log
173: 2006/03/25(土)15:58 ID:rUjENMuu(1) AAS
通常ポートのSSLのhttp→httpsへのリダイレクトはうまくいったのですが、
別ポートにもう一つ設置した445ポートの場合、

外部リンク:www.example.com:445

外部リンク:www.example.com:445

にリダイレクトしたいのですが、RewriteRuleとRewriteRuleを
どのように書いたらいいでしょうか?
174: 2006/04/06(木)05:28 ID:??? AAS
パラメーターに&が入ったときのmod_rewriteについて質問です・・
問題をvar_dumpを使って入ってきたパラメーターだけを表示するプログラムtest.phpにまとめてみました。
あと私のところで使ってる文字コードはUTF-8

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

$param = urlencode("coffee&tea");
$directUrl = "外部リンク[php]:hoge.go.jp". $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
(1): 2006/04/06(木)05:28 ID:??? AAS
case1のdirect_urlの場合外部リンク[php]:hogehoge.go.jpを生成。
そのURL(自分自身なわけだけど)に飛ぶと以下の文字列を吐き出す
string(20) "keyword=coffee%26tea"
array(1) { ["keyword"]=> string(10) "coffee&tea" }
これはOK。これにrewriteを噛ましたい。

問題のcase 2、rewrite_urlの場合外部リンク:hoge.go.jpを生成。
飛ぶと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
(1): 2006/04/06(木)08:11 ID:??? AAS
>>175
$rewriteUrl = "外部リンク:hoge.go.jp". urlencode($param). "/";
177: 2006/04/06(木)08:59 ID:??? AAS
>>176
あー、なるほど、mod_rewriteにはurlencodeを2重に仕込むのね。
mod_rewriteを延々と弄っててきがつかんかった。
確認取ったところ上手く動きました。
この方法でやってみます。サンクス。

しかしmod_rewrite側での対応は設定はやはり難しいのかなぁ・・・
PHPに入ってくるエンコード状態と出て行くエンコード状態がrewrite使う使わずに関わらず
同じであれば見通しがいいかなーとか思ってたので。
178
(1): 2006/04/22(土)02:52 ID:IkBNOhRq(1) AAS
フラグのQSAは、マニュアルに

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

とあるのですが、実挙動としてどのようになるのか、よくわかりません。
いったいどうなるのでしょうか?
179: 2006/04/22(土)13:58 ID:??? AAS
>178
読んで字の如くそうなる。
180: 2006/04/23(日)02:46 ID:??? AAS
いや、だからその、言葉の意味がわかにくいので・・・
実挙動としてどうなるのか、サンプルなどがあるとわかりやすいんですけど、、
181
(1): 2006/04/24(月)11:05 ID:Z/7vX4oM(1) AAS
/hoge/modname/ReserveForm.do

/hoge/modname/index.php?ReserveForm

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

modnameの部分を$1に置換するにはどうやればいいのでしょうか。
182: 2006/04/24(月)12:34 ID:??? AAS
>>181
modnameを置換する必要はないようだけど例文の間違いですか
183: 2006/06/12(月)02:24 ID:??? AAS
>>143 みたいなことしたいのですけど、やはり決定的な方法ってありませんかね。。。
184: 2006/06/12(月)05:04 ID:??? AAS
>>150 に書いてありましたね。。。
すみません。。。
185
(1): 2006/06/15(木)09:05 ID:p9raRrGD(1) AAS
Apache1.3.3, Win2000SP2で、バーチャルホストでMovableTypeを運用してます。

Tagを、外部リンク:domain.tld
という形で作れるようにできたまではいいのですが、
外部リンク[html]:as-is.net を参考に .htaccessに

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

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

実際に飛んでほしい先は
外部リンク[cgi]:domain.tld
です。

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

見直す点等アドバイスいただければ幸いです。
186: 185 2006/06/15(木)09:07 ID:??? AAS
すみません、タイプミスありました。

実際に飛んでほしい先は
外部リンク[cgi]:domain.tld
です。
187: 2006/06/24(土)20:11 ID:usPjod1h(1) AAS
外部リンク:www.hogehoge.com外部リンク:hogehoge.com
に書き換えたいのですが、
どうすればいいのですか?
188: 2006/06/25(日)09:19 ID:??? AAS
RewriteRule ^$ 外部リンク:hogehoge.com
189
(1): [apache] 2006/07/29(土)17:15 ID:??? AAS
こんなことをしたいのですが、500 Internal Server Errorになります。
httpdはRHEL3のインストーラーにしたがって、そのままインストールしました。

外部リンク[jp]:www.domain.com

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

外部リンク:www.google.co.jp

アドバイスをお願いします。
190: 2006/08/01(火)20:44 ID:??? AAS
>>189
R オプションでリダイレクトじゃまいか?
[R,L]
191: 2006/08/07(月)16:21 ID:??? AAS
JVNVU#395412
Apache httpd の mod_rewrite モジュールにおけるバッファオーバーフローの脆弱性
外部リンク[html]:jvn.jp

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

またproxy接続の人をmod_rewriteだけでなるべく効果的に(完全でなくてもいい)
別アドレスへ飛ばしたいのですがどの環境変数にRewriteCondをどう書けばいいでしょうか?
初心者ですがよろしくお願いします。
193: 2006/08/29(火)18:50 ID:qBkjqVym(1) AAS
外部リンク:example.com を
外部リンク:example.com
にリダイレクトさせるために、.htaccessに
RewriteEngine on
RewriteRule ^(.+)$ /?$1 [L]
と書いたのですが、500エラー出てうまくいきません。
アドバイスお願いします・・・
194
(1): 2006/09/05(火)21:59 ID:Hy3lSiWg(1/2) AAS
質問です。

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

サーバー管理人さんが忙しいようでなかなか連絡がつきません、
どうにか動作確認をしたいのですが。。。
195
(1): 2006/09/05(火)23:49 ID:??? AAS
>>194
動作確認の方法もわからずにそんなことをしてどうするつもりだ?
196: 2006/09/05(火)23:53 ID:Hy3lSiWg(2/2) AAS
>>195
とあるCMSプラグインを説明書に従ってインストールします。
197
(1): 2006/09/06(水)16:18 ID:??? AAS
管理人も大変だな
198: 2006/09/06(水)16:50 ID:??? AAS
>>197
そういわれると思ったよ。

標準的な他サーバー3つでプラグイン動いてるし、
プラグインの動作に必要なのはmod_rewriteのみだし。
CMSの動作は他にいれたサイトがずっと安定してるし。

こっちが大変だと思ってるけどもう実装は諦めた。
断る。
199
(1): 2006/09/06(水)22:30 ID:ogWsQap5(1) AAS
ねぇ。誰かmod_rewriteエミュレータつくらね?

入力文字列(URL)を入力したら
htaccessにしたがって
どうURL変換されるか表示されるの。

そうすれば大幅に敷居が下がると思うんだけど。
200: 2006/09/07(木)09:25 ID:??? AAS
>>199
> mod_rewriteエミュレータ作ろうと思うんだけどどうよ?
> 入力文字列(URL)を入力したら
> htaccessにしたがって
> どうURL変換されるか表示されるの。
> そうすれば大幅に敷居が下がると思うんだけど。

すっげぇ期待してます。
201: 2006/09/07(木)17:01 ID:??? AAS
勝手に変わってるw
まあ便利だろうけどdebug onにすれば大体事足りるからね
202: 2006/10/21(土)03:17 ID:KzoqADxq(1) AAS
mod_jk2でapacheとtomcatを連携しています。
mod_rewriteを使って、tomcat上で動くstrutsを用いたアプリの
URLを書き換えようとしているのですが、うまくいきません。。
(URLがrewriteされる前に、tomcatのほうに制御がいってしまい、うまく書き換えられない)

どこを設定すればよいでしょうか?
203: 2006/10/22(日)17:32 ID:??? AAS
mod_rewriteエミュレータまだですか?
204: 2006/10/22(日)21:14 ID:??? AAS
最近佐賀ネタでスレ違いの書き込みが増えている。
佐賀県庁・佐賀県警・談合・痴漢・情報漏洩などの内容だ。
銀行が潰れるとしたデマが回り騒ぎが起きたこともある。
このような書き込みは慎むべきだ。

被害防止のため常駐するスレに啓蒙してくれ。
205: 2006/12/14(木)00:36 ID:HPgduaQo(1) AAS
坊やな質問させてもらうで酢

mod_rewriteのRewriteRuleでprofile.cgiからprofile.htmlへURLの書き換えをしようとしてるで酢
書いたルールが以下の通りで酢

RewriteRule ^(.*)\.cgi?(.*) $1.html?$2 [L]

でも「profile.htmlなんてねぇよ」って狐火に言われるんで酢
mod_rewriteってURLだけの書き換えって出来ないんで酢か?

回答お願いしま酢
206
(1): 2006/12/14(木)14:03 ID:??? AAS
クライアント側を騙すことは出来ない
207: 2006/12/14(木)18:14 ID:??? AAS
>>206
まじで酢か。
じゃあソース直接書き換えるしかないで酢ね。
ありがとうで酢
208: 2006/12/15(金)02:34 ID:??? AAS
cgi と html が逆なだけだろw

htmlにアクセスしたときcgiを実行するようにすればいいんだよ。
209: 2006/12/16(土)00:15 ID:??? AAS
.htacc(略
210
(1): 2007/03/03(土)20:36 ID:??? AAS
すいません。
正規表現の質問なのですが、

mod_rewriteで、
"/media.*"以外へのリクエストをすべて"/index.php"へ飛ばすにはどうすれば良いでしょうか?

宜しくお願いします。
211: 2007/03/04(日)12:24 ID:??? AAS
>>210
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/media
RewriteRule (.*) /index.php [L]

!^/media の ^ はいらんかったかな…
212
(1): 2007/03/06(火)13:08 ID:??? AAS
すいません。質問させてください。
外部リンク:example.comを 外部リンク:www.example.com
リダイレクトさせたいのですが、https環境になるとうまくいきません。
https用に下記のように考えてみたのですが…。

RewriteEngine on
RewriteCond %{SERVER_PORT} ^443 [AND]
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule (.*)$ 外部リンク:www.example.com$1 [R=301,L]
うまい方法はないでしょうか?
213: 212 2007/03/06(火)14:31 ID:??? AAS
自己解決しました。
RewriteEngine on
RewriteCond %{SERVER_PORT} ^443
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule (.*)$ 外部リンク:www.example.com$1 [R=301,L]
SSL環境の設定ファイルが違いました。。。orz
214
(1): 2007/03/07(水)01:06 ID:??? AAS
([0-9A-Za-z]+) の部分にアンダーバーを入れたいのですが、_を入れてもうまくいきません。

RewriteRule ^([0-9A-Za-z_]+)/$ /index.php?mod=user&act=$1 [L]

半角英数字の正規表現にアンダーバーを入れるにはどうすればいいでしょうか?
215: 214 2007/03/07(水)01:09 ID:??? AAS
自己レス
ただapacheを再起動していなかっただけぽ
216
(1): 2007/03/10(土)17:38 ID:VXyj5Dh3(1) AAS
index.php?p=2&mode=m&url=外部リンク:www.example.com

で m/2/外部リンク:wwww.example.com として表示させることは可能でしょうか?
217
(2): 2007/05/25(金)00:26 ID:4kvXKUJV(1) AAS
ちょっと質問なんですが
外部リンク:example.com
hogeというディレクトリが無ければ
外部リンク[php]:example.com にリダイレクト
あれば
外部リンク:example.com をそのまま表示させたいのです。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

上記のようにやってみたのですが、ディレクトリが存在しようが無かろうが
すべて外部リンク[php]:example.comにリダイレクトされてしまいました。
いったいどこが間違っているのでしょうか?
218
(1): 2007/05/25(金)07:40 ID:??? AAS
>>216
可能
>>217
試したらちゃんと動作したので間違ってはいないと思う
219: 217 2007/05/26(土)06:46 ID:??? AAS
>>218
まじっすか。
apacheの設定に問題があるのかもしれません。
もうすこし調べてみます。ありがとうございました。
220: 2007/05/26(土)13:58 ID:llpEpcc0(1/2) AAS
都合により mod_dir のスラッシュ補完が行えない環境なので、
mod_rewrite でスラッシュ補完を実現させたいと考えており、アドバイスをお願いしたいです。
※説明が長くなってしまったので、本文をいくつかに分割して投稿いたします。

○現在の状況
まず、下記の設定を追加する事で、UserDir にチルダ無しでアクセスが出来るようにしてあります。

RewriteEngine on
RewriteRule ^/([a-zA-Z0-9_\-]+)/(.*) - [C]
RewriteCond /home/$1/public_html/$2 -f [OR]
RewriteCond /home/$1/public_html -d
RewriteRule ^/([a-zA-Z0-9_\-]+)/(.*) /~$1/$2/ [PT]
RewriteRule ^/([a-zA-Z0-9_\-]+)$ /~$1/ [PT]

上記 RewriteRule の影響で、 URLの最後にスラッシュが含まれていない場合、mod_dir のスラッシュ補完が行われません。

・例 test ユーザのディレクトリでアクセスした場合
本来であれば下記のスラッシュ補完が行われるはずだが、実際にはスラッシュ補完が稼動しない。

外部リンク:www.xxxx.net

外部リンク:www.xxxx.net とさせたい

ちなみに、チルダ有りでアクセスすると mod_dir のスラッシュ補完は問題なく行われる事を確認済です。

外部リンク:www.xxxx.net

外部リンク:www.xxxx.net となる。
221: 2007/05/26(土)13:59 ID:llpEpcc0(2/2) AAS
○実現させたい事
UserDir のサブディレクトリへチルダ無しでアクセスした場合にも、スラッシュ補完が行われるようにしたい。

色々試した結果、下記のように書き換えると UserDir のルートディレクトリだけはスラッシュ補完が行えるようになりました。

・設定
RewriteEngine on
RewriteRule ^/([a-zA-Z0-9_\-]+)$ $1/ [R]
RewriteRule ^/([a-zA-Z0-9_\-]+)/(.*) - [C]
RewriteCond /home/$1/public_html/$2 -f [OR]
RewriteCond /home/$1/public_html -d
RewriteRule ^/([a-zA-Z0-9_\-]+)/(.*) /~$1/$2/ [PT]
RewriteRule ^/([a-zA-Z0-9_\-]+)$ /~$1/ [PT]

・下記は動作するようになった。
外部リンク:www.xxxx.net

外部リンク:www.xxxx.net

ただし、サブディレクトリのスラッシュ補完はなされません。

外部リンク:www.xxxx.net

外部リンク:www.xxxx.net にならない。

サブディレクトリのスラッシュ補完を行う為には、どのように RewriteRule を書けばよろしいでしょうか。
アドバイスをお願い致します。
222: 2007/05/29(火)00:06 ID:??? AAS
RewriteRule ^/([\w_]+(/[\w_]+)*)$ $1/ [R]

なんかこんな感じじゃだめかね?
適当
223: サレ 2007/06/21(木)20:21 ID:yAR7j5RX(1) AAS
mod_rewriteを利用して特定のページアクセスの際にSERVER_NAMEとQUERY_STRING以降を除いて
大文字、小文字の区別なく表示させたいのですが、全くうまくいきません、いい案をお持ちの
方いたらご教示お願いしたいです。
224: 2007/07/06(金)23:52 ID:??? AAS
AにきたリクエストをBにリダイレクトしたいのですが
Cのようにリダイレクト後のURLに「?t=aaa&k=bbb」がくっついてきちゃいます。
これがくっついてこないようにするにはどうしたらいいのでしょうか。

A:/search.html?t=aaa&k=bbb
B:/search/aaa/bbb/index.html
C:/search/aaa/bbb/index.html?t=aaa&k=bbb

RewriteCond %{REQUEST_URI} ^/search\.html$
RewriteCond %{QUERY_STRING} ^t=(.+)&k=(.+)$
RewriteRule ^.*$ /search/%1/%2/index.html [R,L]
225: 2007/07/12(木)15:02 ID:5UK7fMyc(1) AAS
RewriteEngine on
RewriteCond ${REQUEST_URI} !-d
RewriteRule ^(.*hoge)/([0-9]+)/$ $1?number=$2 [L]

これでURL変換はうまくいってるんですが、ブラウザのアドレス欄には変換後の
外部リンク:hex12316hoge
というのが表示されてしまいます。
これを変換前のURLのままにしておくにはどうすれば良いのでしょうか?
226
(1): 2007/07/12(木)18:23 ID:??? AAS
外部リンク:aaa.example.com外部リンク:example.comに書き換えるにはどうしたらよいでしょうか?

aaa.example.comとexcample.comは同一のサーバーです。
227: 2007/07/17(火)16:47 ID:??? AAS
>>266
ID。

aaaは定数? それともwwwとwww2だとか幾つかある?
228
(3): 2007/07/19(木)00:53 ID:??? AAS
質問です。よろしくお願いします。
RewriteRule /(.+)\.(.+)$ /$1.A.$2
既存の拡張子の前に.Aを挿入しようとしていますが、$2に前置するピリオドが
悪さしているらしく、うまく動きません。どうすればよいでしょうか。
229: 228 2007/07/19(木)01:05 ID:k0bvHpUP(1) AAS
.を_などにすると意図したように動きます。といいつつあげます。
230: 2007/07/19(木)01:50 ID:??? AAS
とりあえずピリオドの前には常に¥マークを付けるんだ
231: 228 2007/07/19(木)02:11 ID:??? AAS
\つけてもだめでした。その前に、.$1は問題ないんですが、
.はそもそもエスケープする必要あるのが普通でしょうか。
.Aの挿入はおいといて、$1.$2もだめでしたが、$2.$1は大丈夫でした。
何か他の理由でしょうか。

とりあえず、$2にピリオドごと格納して解決しました。
が、なぜ上記のがだめなのか気になって夜も眠れません。
232: 228 2007/07/19(木)23:31 ID:??? AAS
全然、別の問題のようでした。何かがループされてしまってたようです。
Rewriteの動きをよく理解できてないようですので勉強します。
233
(2): 2007/08/12(日)03:55 ID:??? AAS
AA省
234: 2007/08/12(日)03:59 ID:YzqJNCOc(1) AAS
age
235: 2007/08/12(日)12:45 ID:??? AAS
>>226
なんでそんなことするんだよwwwと思ったけどなるほど お前頭いいな
ちょっと考えてみるわ
236
(1): JAPU ◆lVJAPUTeX. 2007/08/12(日)19:58 ID:??? AAS
>>233
RewriteRule ^(/.*/)([^/]+)/([^/]+)/$ $1?$2=$3 [QSA,N] ※1
RewriteRule ^/([^/]+)/$ /test/index.cgi?a=$1 [QSA] ※2

"QSA" (query string append) フラグは、書き換え後の QUERY_STRING 部分のみ "追加" の扱いとします。
"N" (next) フラグは、先頭からルールを再実行します。

path = "/1/b/2/c/3/", QUERY_STRING=""
※1のルール適用
path = "/1/a/2/", QUERY_STRING="c=3"
※1のルール適用
path = "/1/", QUERY_STRING="b=2&c=3"
※2のルール適用
path = "/index.cgi", QUERY_STRING="a=1&b=2&c=3"
237: 2007/08/13(月)01:26 ID:xOKpCYRV(1) AAS
>>236
レスどうもです!

ちょっとうまく動かなかったので最初の "/" をとってこんな風にしてみました。

RewriteRule ^(.*/)([^/]+)/([^/]+)/$ $1?$2=$3 [QSA,N]
RewriteRule ^([^/]+)/$ index.php?a=$1 [QSA]

でも、下記のように変換されてしまって無限ループになってしまいました。
何が悪いんでしょうか?

1/b/2/c/3/ -> 1/b/2/?c=3
1/b/2//b/2/c/3/ -> 1/b/2//b/2/?c=3
1/b/2//b/2//b/2/c/3/ -> 1/b/2//b/2//b/2/?c=3
1/b/2//b/2//b/2//b/2/c/3/ -> 1/b/2//b/2//b/2//b/2/?c=3



238: JAPU ◆lVJAPUTeX. 2007/08/13(月)02:57 ID:??? AAS
.htaccess に書くと、たしかにそうなった。

httpd.conf なら問題無いんだが… 途中、こんなヘンテコな変換されるのが謎。
add path-info postfix: /usr/local/www/data/1/b/2/ -> /usr/local/www/data/1/b/2//b/2/c/3/

# ちなみに Apache 1.3.37
239: 2007/08/13(月)03:09 ID:??? AAS
.htaccessはRewriteBaseが必須。
240: JAPU ◆lVJAPUTeX. 2007/08/13(月)07:59 ID:??? AAS
mami# grep ^DocumentRoot /usr/local/etc/apache/httpd.conf
DocumentRoot "/usr/local/www/data"
mami# pwd
/usr/local/www/data
mami# cat .htaccess
RewriteEngine on
RewriteBase /usr/local/www/data
RewriteRule ^(.*/)([^/]+)/([^/]+)/$ $1?$2=$3 [QSA,N]
RewriteRule ^([^/]+)/$ index.cgi?a=$1 [QSA]

これじゃまずいんだっけ。
241: 2007/08/13(月)11:17 ID:d8YeW0fj(1) AAS
問題なさそうだけど。。。
242
(1): 2007/08/13(月)14:05 ID:??? AAS
RewriteBaseにセットする値はURL-path。
243: JAPU ◆lVJAPUTeX. 2007/08/14(火)01:02 ID:??? AAS
>>242
たしかにマニュアルみたらそう書いてありました。
が、RewriteBase / でも結果は変わらず。
244: 2007/08/14(火)01:45 ID:sYc3cRby(1) AAS
変換ログが怪しすぎるし、バグなのかなぁ。
245: 2007/08/23(木)14:25 ID:oRh+in4w(1) AAS
AA省
246: 2007/08/25(土)21:04 ID:mIpqfkg/(1) AAS
RewriteRule でどのパターンにも一致しない場合のルールでどうやればよいでしょうか?
247
(1): 2007/08/26(日)05:40 ID:??? AAS
YomisearchCGI版のカテゴリを静的化したいのですが、
参考になるページご存じの方教えて下さい
yomi.cgi?page=1&mode=kt&sort=ac_new&kt=01_03

/p1/kt/ac_new/01_03.html
こんな感じにしたいです
(もしくはもっと短く)
248: 2007/08/26(日)11:52 ID:6oSQJEbU(1) AAS
>>247
このスレみるだけでじゅうぶんでは。
どこを難しいと感じているのかわからないし。
249: 2007/10/03(水)14:46 ID:??? AAS
すみません質問させてください
WindowsXP SP2 Apache2.2.3でローカル鯖たててます。
mod_rewriteを使えるようにしたいのですが

・modulesディレクトリにmod_rewrite.soがあることを確認
・httpd.confのLoadModule setenvif_module modules/mod_rewrite.soのコメントアウトをはずす
・Apache再起動
の手順でやってもmod_rewriteが有効になりません。
任意のディレクトリに
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Za-z)]+)\.html$ index.php?$1 [L]
って書いた.htaccess置いてるんですが404エラーになってしまって。

同じものをwebサーバにうpすると普通に動作するので
Apacheの設定が出来てないんだと思うのですが自分では対処不能ですorz
250
(1): 2007/10/03(水)15:17 ID:??? AAS
RewriteEngine On
RewriteRule .* index.php
まずこうしてmod_rewrite、文法どちらに問題があるのか切り分けてみなよ。

文法が間違ってるなら
RewriteLog /var/log/httpd/rewrite_log
RewriteLogLevel 9
としてログを見ながら原因を探る

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
でいけるかもしれない。
251: 2007/10/03(水)15:34 ID:??? AAS
>>250
やってみたんですがあいかわらず404です…
文法間違いじゃなくてやっぱApacheの設定ミス…?
インストールしなおした方がいいんでしょうか。
252: 2007/10/03(水)17:31 ID:??? AAS
.htaccessで使うときはRewriteBaseが必須。
253: 2007/10/03(水)18:16 ID:??? AAS
う〜ん、
RewriteEngine on
RewriteBase /hoge/hoge/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Za-z)]+)\.html$ index.php?$1 [L]
でやってみましたがうまく行きませんorz
.htaccess書き換えてもApacheの再起動はしなくていいんですよね?
254
(3): 2007/10/25(木)12:12 ID:??? AAS
AA省
1-
あと 432 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.037s