【Apache】mod_rewriteについて語るスレ
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/06/11 19:29ID:wH0rV3+D基本的な内容は↓ページを読むこと。
http://japache.infoscience.co.jp/rewriteguide/
http://japache.infoscience.co.jp/japanese_1_3_6/manual/mod/mod_rewrite.html
それではマターリ逝きましょう。
0622nobodyさん
2012/06/29(金) 01:21:01.86ID:???たくさんあるので、読んだものもあれば
読んでないものもあるので、
答えられれません。
0625nobodyさん
2012/07/01(日) 18:29:10.86ID:???ttp://www.ietf.org/rfc/rfc1630.txt
これを読んでもわからない?
読んだことなかった?
> Windows版Apache+mod_rewriteで(ry
本当に":"が使えなかったらschemeの後は何で区切ろうかな
使えるところ使えないところがわからないアホってすごいな
0626nobodyさん
2012/07/02(月) 00:41:19.79ID:???0627nobodyさん
2012/07/02(月) 07:00:44.90ID:???0628nobodyさん
2012/07/02(月) 19:36:25.60ID:???0629nobodyさん
2012/07/20(金) 21:05:23.82ID:???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]
0630nobodyさん
2012/07/20(金) 21:27:00.45ID:???0631nobodyさん
2012/07/21(土) 14:35:53.18ID:???にPフラグを付けたして、
RewriteRule ^(.+)$ http://example.com/sub/$1 [L,P]
とすることで希望の動作になりました。
0633nobodyさん
2012/08/07(火) 13:24:36.49ID:YRcNWMi3RewriteRule (.+)/([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]
なら動くのですが・・・。
どうすれば同じ文字を使い書き換えすることができるんでしょうか・・・?
0634nobodyさん
2012/09/09(日) 08:58:55.72ID:???mod_rewriteで呼び出すnph-cgiのボディに余計なヘッダ文字列が出力されます。
ヘッダには意図した文字列が出力されます。
まさにこのスレの>>76>>286と同じ症状なんですが回避策ありませんでしょうか?
0635nobodyさん
2012/10/26(金) 23:58:36.62ID:???Apacheのmod_rewriteをmod_mrubyによって無くす事ができるか
http://blog.matsumoto-r.jp/?p=2969
0636nobodyさん
2012/10/29(月) 20:46:56.05ID: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を両方書いても最初に書いたルールしか適用されません。
オプションが問題なのでしょうか?よろしくお願いします。
0637nobodyさん
2012/10/29(月) 20:52:57.41ID:???0638nobodyさん
2012/10/29(月) 22:36:47.55ID:jAMWqNZ2はい。レスありがとうございます。
設定は全部でこのようになっています。
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は当然設定に記入する必要がありますよね。そしてアクセスがあった場合両方のドメインで同じようになるようにしたいのです。
よろしくお願いします。
0639nobodyさん
2012/10/29(月) 22:43:52.73ID:???0640nobodyさん
2012/11/19(月) 21:08:48.34ID:???0641nobodyさん
2012/11/19(月) 21:29:17.19ID:???0642nobodyさん
2013/03/21(木) 19:12:40.16ID:???このリンクを踏むとhttp://localhost/に飛んでしまいます
href="/"というリンクが使いたいので、ドキュメントルートをhttp://localhost/~example/にする方法を教えてください
0643nobodyさん
2013/03/26(火) 06:58:48.63ID:4K2kYRPh0644nobodyさん
2013/05/02(木) 20:24:29.83ID:bOBKpt7Iapache2.2から2.4への移行作業をしていて気づいたのですが
2.2のときはトップページへのアクセスを
RewriteRule ^$ /foo.php
としてリライトしてたのですが
2.4ではこの条件に該当しなくなってしまいました。
いろいろ試行錯誤したところ
RewriteRule ^(index\.html)?$ /foo.php
と書くとOKということが分かりました。
RewriteRule ^index\.html$ /foo.php
はNGでした。
回避策は分かったのですがなんだか気持ち悪いので質問してみました。
これは仕様が変わったのでしょうか?
0645nobodyさん
2013/05/08(水) 17:17:31.74ID:lLEBkj6zURLそのままで、外部のサイトを表示させたいです。
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まで変わっちゃいます。
お願いします
0646645
2013/05/08(水) 18:14:47.04ID:???サーバーには、入ってませんでした (つд⊂)エーン
0647nobodyさん
2013/05/08(水) 19:12:39.58ID:???0649645
2013/05/11(土) 17:44:12.77ID:???パクリサイトの手口もそうやるんだろうけどさ。
0650645
2013/05/11(土) 17:45:21.64ID:???0651nobodyさん
2013/11/29(金) 03:52:26.84ID:???初期ドメイン から 独自ドメインに転送したいのでうまくいきません
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を利用できるみたいですし
記述が間違っていうのでしょうか
どうかよろしくお願いいたします。
0652nobodyさん
2013/11/29(金) 07:39:50.08ID:???0653nobodyさん
2013/11/29(金) 07:40:27.72ID:x026Ok3v>\xef\xbb\xbf
とりあえず、UTF-8のBOMだな、これ。
付かないように保存してみたら?
0654nobodyさん
2013/11/29(金) 09:56:58.90ID:qgN1e/+l0655nobodyさん
2014/03/27(木) 00:55:29.10ID:???特定のファイルへアクセスがあった場合には、そのファイルだけリダイレクトをかけたいです。
具体的には、
contact.html にアクセスが来た場合には、
contact.php ファイルに飛ばしたいと考えています。
どういうコードを書けば全ファイルでは無く、特定のファイルに対して.modrewriteを使えますか?
0656nobodyさん
2014/03/27(木) 04:10:08.99ID:???RewriteRule (.*)/contact.html$ $1/contact.php [R=301,L]
とかそんなんでいいんじゃないの
0658nobodyさん
2014/03/28(金) 20:25:13.28ID:???何か特別話題があるわけでもないし
とはいえ見てる人は見てるだろう、俺も専ブラのブックマークしてチェックはしてるし
一見過疎ってても案外すぐレスが付くところは珍しくは無い
0659nobodyさん
2014/03/29(土) 07:47:28.10ID:???>>655程度ならRedirectMatchで十分だろと思いつつ
にやにやしながら読んでるしw
0661sage
2014/04/06(日) 15:02:01.73ID: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]
と書いたのですが、正常に動作してくれません。
どこが間違っているか教えて下さい。
■ このスレッドは過去ログ倉庫に格納されています