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

このエントリーをはてなブックマークに追加
626nobodyさん:2012/07/02(月) 00:41:19.79 ID:???
相変わらず…何もわかっていない…
627nobodyさん:2012/07/02(月) 07:00:44.90 ID:???
何でアホのくせに偉そうなんだろう・・・
628nobodyさん:2012/07/02(月) 19:36:25.60 ID:???
脳みそが足りないからじゃね?
629nobodyさん:2012/07/20(金) 21:05:23.82 ID:???
http://sub.example.com/file.txt
http://example.com/sub/file.txt

実際のファイルは下のURLにある状態ですが、
上のURLにアクセスした場合にも同じファイルを返したいと思っています。
実際は下のファイルは階層が深く、URLがかなり長いので、ショートカットのような形で使いたいと思っています。
その時に、上のURLでアクセスした場合は上のURLのままにしておきたいのですが、どのようにしたら実現できるでしょうか。

現在 sub.example.com の .htaccess に以下のような記述をしてみたのですが、URLが下のものに変わってしまうようです。

RewriteEngine On
RewriteBase /
RewriteRule ^(.+)$ http://example.com/sub/$1 [L]
630nobodyさん:2012/07/20(金) 21:27:00.45 ID:???
mod_rewriteよか、したのサーバーでリバースプロキシだろ
631nobodyさん:2012/07/21(土) 14:35:53.18 ID:???
RewriteRule ^(.+)$ http://example.com/sub/$1 [L]
にPフラグを付けたして、
RewriteRule ^(.+)$ http://example.com/sub/$1 [L,P]
とすることで希望の動作になりました。
632nobodyさん:2012/07/28(土) 01:33:58.00 ID:???
>>630
役立たずwww
633nobodyさん:2012/08/07(火) 13:24:36.49 ID:YRcNWMi3
さくらのレンタルサーバーを使っているのですが
RewriteRule (.+)/([0-9]+)$ $1.php?id=$2 [L]

RewriteRule a/([0-9]+)$ a.php?id=$1 [L]
などの用に書き換え先と書き換え後に同じ文字があると404エラーになってしまいます。
RewriteRule a/([0-9]+)$ b.php?id=$1 [L]
なら動くのですが・・・。
どうすれば同じ文字を使い書き換えすることができるんでしょうか・・・?
634nobodyさん:2012/09/09(日) 08:58:55.72 ID:???
御存知の方教えてください。

mod_rewriteで呼び出すnph-cgiのボディに余計なヘッダ文字列が出力されます。
ヘッダには意図した文字列が出力されます。
まさにこのスレの>>76>>286と同じ症状なんですが回避策ありませんでしょうか?
635nobodyさん:2012/10/26(金) 23:58:36.62 ID:???
そろそろmod_rewriteも終わるか?

Apacheのmod_rewriteをmod_mrubyによって無くす事ができるか
http://blog.matsumoto-r.jp/?p=2969
636nobodyさん:2012/10/29(月) 20:46:56.05 ID:jAMWqNZ2
質問させてください
現在Apacheのバーチャルホスト機能を利用しています

■VirtualHostの設定はこのようになっています(DocumentRootは同じ)

<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /home/hoge/public_html
</VirtualHost>

<VirtualHost *:80>
ServerName www.example2.com
DocumentRoot /home/hoge/public_html
</VirtualHost>

■やりたいこと
1) http://www.example.com/hoge/でアクセスがあった場合
/home/hoge/public_html/index.php?id=hogeを表示したい。
RewriteRule ^([a-z0-9_-]+)/$ /home/hoge/public_html/index.php?id=$1 [L]

2) http://www.example2.comでアクセスがあった場合
/home/hoge/public_html/index.php?id=hogeを表示したい。
RewriteRule ^$ /home/hoge/public_html/index.php?id=hoge [L]

つまり、異なるドメインで同じページを表示したいのです。
このRewriteRuleを両方書いても最初に書いたルールしか適用されません。
オプションが問題なのでしょうか?よろしくお願いします。
637nobodyさん:2012/10/29(月) 20:52:57.41 ID:???
全部貼って
638nobodyさん:2012/10/29(月) 22:36:47.55 ID:jAMWqNZ2
>>637
はい。レスありがとうございます。
設定は全部でこのようになっています。

RewriteEngine on

# 1) www.example.com用
RewriteRule ^([a-z0-9_-]+)/$ /home/hoge/public_html/index.php?id=$1 [L]
RewriteRule ^([a-z0-9_-]+)/([a-z]+)/$ /home/hoge/public_html/$2.php?id=$1 [L]

# 2) www.example2.com用
RewriteRule ^$ /home/hoge/public_html/index.php?id=hoge [L]
RewriteRule ^([a-z]+)/$ /home/hoge/public_html/$1.php?id=hoge [L]


1)は、http://www.example.com/hoge/でアクセスが会った場合、id=hogeになるようにしています。これを
2)で、http://www.example2.comでアクセスがあった場合、id=hogeになるような設定にしたいと思っています。
id=hogeは当然設定に記入する必要がありますよね。そしてアクセスがあった場合両方のドメインで同じようになるようにしたいのです。
よろしくお願いします。
639nobodyさん:2012/10/29(月) 22:43:52.73 ID:???
丁寧な質問者に対してこんなこと言うのはほんと心苦しいんだけど、頼むから全部貼って
640nobodyさん:2012/11/19(月) 21:08:48.34 ID:???
彼はなぜ全部じゃないと思ったのだろう?
641nobodyさん:2012/11/19(月) 21:29:17.19 ID:???
640はなぜ全部だと思ったのだろう?
642nobodyさん:2013/03/21(木) 19:12:40.16 ID:???
http://localhost/~example/test.phpに<a href="/">top</a>を書いて
このリンクを踏むとhttp://localhost/に飛んでしまいます
href="/"というリンクが使いたいので、ドキュメントルートをhttp://localhost/~example/にする方法を教えてください
643nobodyさん:2013/03/26(火) 06:58:48.63 ID:4K2kYRPh
>>642 baseでggrks mod_rewrite関係ねえから
644nobodyさん:2013/05/02(木) 20:24:29.83 ID:bOBKpt7I
ちょっと質問させてください
apache2.2から2.4への移行作業をしていて気づいたのですが
2.2のときはトップページへのアクセスを

RewriteRule ^$ /foo.php

としてリライトしてたのですが
2.4ではこの条件に該当しなくなってしまいました。

いろいろ試行錯誤したところ

RewriteRule ^(index\.html)?$ /foo.php

と書くとOKということが分かりました。

RewriteRule ^index\.html$ /foo.php
はNGでした。

回避策は分かったのですがなんだか気持ち悪いので質問してみました。
これは仕様が変わったのでしょうか?
645nobodyさん:2013/05/08(水) 17:17:31.74 ID:lLEBkj6z
おしえてください。
URLそのままで、外部のサイトを表示させたいです。

http://www.hogehoge.com/pages/test01/
を、
URL欄をそのままに
http://aaaa.hogehoge.com/pages/test01/ を表示させたいです

wwwの .htaccess に
RewriteRule ^pages/(.*)/$ http://aaaa.hogehoge.com/pages/$1/ [R,L]
って書くと、URLまで変わっちゃいます。

お願いします
646645:2013/05/08(水) 18:14:47.04 ID:???
mod_proxyが、無いとダメっぽいですね。

サーバーには、入ってませんでした (つд⊂)エーン
647nobodyさん:2013/05/08(水) 19:12:39.58 ID:???
Rが付くとデフォルトでは301を使ってリダイレクトする。
648nobodyさん:2013/05/08(水) 20:06:48.66 ID:???
>>645
フィッシングサイト乙
649645:2013/05/11(土) 17:44:12.77 ID:???
メインのwww.〜のサーバーが仕様が古くて、使いたいプログラムが動かないだわ。

パクリサイトの手口もそうやるんだろうけどさ。
650645:2013/05/11(土) 17:45:21.64 ID:???
自己解決しました。もういいです。
651nobodyさん:2013/11/29(金) 03:52:26.84 ID:???
さくらサーバーリダイレクト301で
初期ドメイン から 独自ドメインに転送したいのでうまくいきません

RewriteEngine on
RewriteCond %{HTTP_HOST} ****?.sakura?.ne?.jp [NC]
RewriteRule .* http://www.*******.jp%{REQUEST_URI} [L,R=301]

Internal Server Errorが出てしまい
さくらのエラーログを見ると

/home/アカウント/www/.htaccess: Invalid command '\xef\xbb\xbfDirectoryIndex', perhaps mis-spelled or defined by a module not included in the server configuration
ログにあるようにwww配下に.htaccessを置いています

訳すとスペルミスかモジュールがないと言う事ですが
さくらサーバーは公式でmod_rewriteを利用できるみたいですし
記述が間違っていうのでしょうか

どうかよろしくお願いいたします。
652nobodyさん:2013/11/29(金) 07:39:50.08 ID:???
DirectoryIndexの手前に全角スペースとか付いてね?
653nobodyさん:2013/11/29(金) 07:40:27.72 ID:x026Ok3v
>>651
>\xef\xbb\xbf

とりあえず、UTF-8のBOMだな、これ。
付かないように保存してみたら?
654nobodyさん:2013/11/29(金) 09:56:58.90 ID:qgN1e/+l
メモ帳でやるとそういうことが起きるだよ
655nobodyさん:2014/03/27(木) 00:55:29.10 ID:???
Apache の .htaccess の設定について質問させてください。

特定のファイルへアクセスがあった場合には、そのファイルだけリダイレクトをかけたいです。

具体的には、

contact.html にアクセスが来た場合には、
contact.php ファイルに飛ばしたいと考えています。

どういうコードを書けば全ファイルでは無く、特定のファイルに対して.modrewriteを使えますか?
656nobodyさん:2014/03/27(木) 04:10:08.99 ID:???
普通に
RewriteRule (.*)/contact.html$ $1/contact.php [R=301,L]
とかそんなんでいいんじゃないの
657nobodyさん:2014/03/27(木) 21:29:07.68 ID:???
>>656
ありがとうございます!
このスレが過疎過ぎて誰も見てくれていないんじゃないかと思ってましたw
658nobodyさん:2014/03/28(金) 20:25:13.28 ID:???
質問スレでもない特定のモノ向けのスレだからな、過疎るのはしょうがない
何か特別話題があるわけでもないし
とはいえ見てる人は見てるだろう、俺も専ブラのブックマークしてチェックはしてるし
一見過疎ってても案外すぐレスが付くところは珍しくは無い
659nobodyさん:2014/03/29(土) 07:47:28.10 ID:???
リライトそのものはオワコン化しつつあるし、
>>655程度ならRedirectMatchで十分だろと思いつつ
にやにやしながら読んでるしw
660nobodyさん:2014/03/29(土) 13:05:40.16 ID:???
>>659
そんな方法もあったのね。

オワコンってまじでっか?
661sage:2014/04/06(日) 15:02:01.73 ID:TmvJ2Q7/
質問させて下さい。

http://sample.co.jp/xxx/ にアクセスしたときに http://sample.co.jp/xxx.php を表示したくて、.htaccessに

RewriteEngine on
RewriteOptions MaxRedirects=1
RewriteBase /
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z_\-]+)/$ $1\.php [L,R]

と書いたのですが、正常に動作してくれません。
どこが間違っているか教えて下さい。
662nobodyさん:2014/10/21(火) 18:02:28.17 ID:no1UJMbX
マッチしてるか調べたい文字列が
base64でエンコードされているのですが
これをデコードしてからマッチさせるところまで
全部正規表現で記述出来ますか?
663nobodyさん:2014/10/22(水) 05:34:30.98 ID:???
933 名前:デフォルトの名無しさん[sage] 投稿日:2014/10/21(火) 13:15:50.92 ID:QuOrKhyR
マッチしてるか調べたい文字列が
base64でエンコードされているのですが
これをデコードしてからマッチさせるところまで
全部正規表現で記述出来ますか?
664nobodyさん:2014/10/27(月) 21:40:59.94 ID:???
.htaccessに書いた内容が思ったように動かないとき、
動作を確認する方法はあるのでしょうか?
665nobodyさん:2014/10/28(火) 02:51:50.21 ID:BSkYbeSW
ログ吐かせろよハゲ
666664:2014/10/28(火) 21:04:34.73 ID:???
>>665
ハゲはお前だろ。

ていうか、ありがとうございます。
ログってApacheのログですか?
667nobodyさん:2014/10/28(火) 22:26:29.49 ID:???
まあ、落ち着いてマニュアル当たれれ
668nobodyさん:2014/10/29(水) 00:14:35.16 ID:TJ2Xvz38
665だけど1万本くらいてめえにくれてやりたいくらい多すぎて鬱陶しいレベルでふさふさだぞ

りらいとろぐでggrks
669664:2014/10/29(水) 05:50:09.96 ID:???
>>668
1万本もないくせによく言うわツルッパゲのカス野郎。



っていうか、ありがとうございます。

リライトログでぐぐってみます。
670nobodyさん:2014/10/29(水) 09:49:22.19 ID:???
rewritelog って
RewriteCond でスキップされるケースでも
全部ログに残ってしまうみたいだけど
スキップしたときのログを残さないのは無理?

Level 1 だとスキップしたものも記録される
Level 0 だと全部消える
671nobodyさん:2014/11/07(金) 15:24:41.12 ID:aXYLSPgq
誘導されて来ました。

リクエストヘッダで
'Cookie' => 'PHPSESSID=fadkcau6mnmq1ul6jo5pvngqlahd2hoge',

と送られてくるべきものが、ブラウザのバグで
'Cookie' => ', PHPSESSID=fadkcau6mnmq1ul6jo5pvngqlahd2hoge',

と送られてきてるんだけど、これ apache 側でphpに食わすまえに置換できないかな。
mod_headers の RequestHeader は置換できないみたいだし、いい方法ある?
672nobodyさん:2014/11/08(土) 07:45:15.49 ID:???
そのまま放置してバグったブラウザをいつまでも使ってんじゃねーよとするw
673nobodyさん:2014/11/08(土) 17:29:44.58 ID:???
判らないならレスしないでください
うざいだけです
674nobodyさん:2014/11/10(月) 12:43:51.39 ID:???
PHP側でやるべきことだな
675nobodyさん
ぺちぱーの時点で知的障害者だからな