11/08/18 23:32:56.71 5ZXSgAe6
RewriteLog 便利だからテスト中はどんどん使おう。
571:nobodyさん
11/08/19 02:46:12.75
>>568-570 アドバイスありがとうございます。
さくらのマルチドメイン機能を使っているからか、
シングルドメインで使えそうな記述が機能せず、
模索しているうちに以下のコードで動くようになったので
とりあえず張っておきます。ちなみに、なんで
動くかはっきりとした理由は分かりません。(笑)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /aaa
# RewriteLog "/domain1/aaa/rewrite_log"
# RewriteLogLevel 2
# >>570 下記によると .htaccess での記入は非対応なのでさくらで使えず断念
# URLリンク(net-newbie.com)
# ブラウザが gzip 対応の場合
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond "%{DOCUMENT_ROOT}/domain1/aaa/cache/$1.gz" -f
RewriteRule ([^/+]+.xml)$ "/aaa/cache/$1.gz" [L]
# ブラウザが gzip 非対応の場合
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond "%{DOCUMENT_ROOT}/domain1/aaa/cache/$1" -f
RewriteRule ([^/+]+.xml)$ "/aaa/cache/$1" [L]
</IfModule>
572:nobodyさん
11/09/05 10:23:13.89 K5/8sokL
以下のような.htaccessを書いたのですがうまく動作しません
DirectoryIndex my.cgi
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(t(est)?)/
RewriteRule !\.(css|js|gif|jpg)$ my.cgi [NC,NE,L]
※URLはディレクトリ以下のパスのみの記載です
/ => DirectoryIndexに従いmy.cgiにアクセス/画像等はRewriteRuleに従い問題なし
/test/test.cgi => RewriteCondに従いtestまたはtディレクトリ以下にアクセス(問題なし)
/login/ => File does not exist: ...login(my.cgiにアクセスしない)
エラーについては当初正しくmy.cgiが起動されていましたが、
3行目のRewriteCondを追加したらうまくいかなくなりました(コメントアウトすると今でも正常)
ですが、どうしてエラーになるのかがわかりません。
・testまたはtディレクトリにアクセスされたときはリクエストどおり実行
・画像(等)以外へのリクエストはmy.cgiへ転送
ですので、理屈は通ってるようにも思えるんですが、何がよくないんでしょうか
573:nobodyさん
11/09/05 12:20:23.45
頭
574:nobodyさん
11/09/08 14:12:28.46
>>572
うむむ…解読不能。
先にやりたい事を書いてから設定内容を張ったほうが分かりやすいと思うよ。
575:nobodyさん
11/09/08 22:18:32.10 W+wdQIDX
RewriteLogを設定して結果を貼ってみたら?
何度目だこのアドバイス。
576:nobodyさん
11/09/11 20:37:04.38
RewriteCond %{REQUEST_URI} !my\.cgi$ とか足したらどうなる?w
577:nobodyさん
11/09/21 01:56:47.62
rewrite設定で、
URLリンク(www.yahoo.co.jp) を
URLリンク(www.yahoo.co.jp) でも表示させるようにはどうしたら良いのでしょうか。
はてなにあった
RewriteRule (.*)/+(.*) $1/$2
このやりかたでは上手く行かなかったのでして。
578:nobodyさん
11/09/23 07:15:20.30
>>577
まずyahooのサーバーに侵入します。
579:nobodyさん
11/09/24 21:02:26.87
わろた
580:nobodyさん
11/10/19 20:17:17.06
>>577
特に設定しなくても、間の/は無視されないか?
URLリンク(info.2ch.net)
URLリンク(info.2ch.net)
>>572
もう見てないだろうが
DirectoryIndex my.cgi
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(t(est)?)/
RewriteRule !\.(css|js|gif|jpg)$ my.cgi [L,NC,NE]
RewriteCond使わなくても書けるけどな
581:nobodyさん
11/11/09 19:26:51.26 Rf6X/ojT
質問させてください
URL URLリンク(example.com)
上記のURLでtestディレクトリのsearch.phpにアクセスして
id=hoge
key=aaa
を取得したい場合、RewriteRuleはどう書けば良いでしょうか?
ちなみに下記のように書いてますがkeyは取得できてidが取得できません。
RewriteRule ^(.*)/search/ test/search.php?id=$1 [L]
よろしくお願いします。
582:nobodyさん
11/11/09 19:53:51.73
>>581
もともと書いてある内容が間違えてるような気がするが
RewriteRule ^/([^/]+)/search /test/search.php?id=1 [L,QSA]
で
var_dump($_GET) した結果が
array(2) {
["id"]=>
string(4) "hoge"
["key"]=>
string(3) "aaa"
}
583:nobodyさん
11/11/09 19:54:55.38
ミスった
RewriteRule ^/([^/]+)/search /test/search.php?id=$1 [L,QSA]
の間違い
584:nobodyさん
11/11/09 20:38:40.68 Rf6X/ojT
>>583
おお!ありがとうございます
QSAオプションを知りませんでした
585:nobodyさん
11/11/10 06:47:00.47 BWllPMdu
mod_rewriteスレなんてあったんだ
586:nobodyさん
11/11/12 01:36:59.70 hq4h+fDO
助けてください。
http:/directory/abc.jpg?id=123
とブラウザで打ったものを
http:/directory/my.php
にリダイレクトしたい、ただそれだけなのですが、
パターンマッチに引っかかりません。
パターンマッチの部分はこんな感じです。ついでに他の種類の画像をブラウザで
呼び出したときもマッチして欲しいです。
RewriteRule .*\.(gif|jpg|png)(\w+)$ http:/directory/my.php?id2=%1
もうファイルを200回くらい書き換えました。もうすぐ禿げそうです。
587:nobodyさん
11/11/12 02:22:02.95
構いません
588:586
11/11/12 21:57:30.12 hq4h+fDO
なんとなく自己解決しました。ありがとうございました。
589:nobodyさん
11/11/26 15:22:44.10 b2PvvF1A
mod_rewriteにより、以下のリライトをしたいです。
URLリンク(aaaaa.co.jp) ⇒ URLリンク(bbbbb.co.jp)
Apacheの設定として、httpd.confに以下のような設定を書きました。
# ループ防止
RewriteRule ^/aaaaa/$1 - [L]
# リライト
RewriteCond %{HTTP_HOST} ^aaaaa\.co\.jp [NC]
RewriteRule ^(.+)$ /aaaaa/$1 [L]
これでできると思ったのですが、どうしても aaaaa 以下の index.html を読んでくれません。
具体的には、DirectoryIndexとして、
DirectoryIndex index.html index.php
という設定をしているのですが、aaaaaディレクトリには index.html が存在しているにもかかわらず、アクセスすると「NotFound:/aaaaa/index.phpがありません」となります。
RewriteLogを出力してログを見てみると、以下のような流れになっているようです。
1.[initial] / でのRewriteルール確認
2.[subreq] index.html でのRewriteルール確認
3.[subreq] index.php でのRewriteルールの確認
4.[initial/redir] /aaaaa/index.php でのRewriteルールの確認【一致】
index.php を用意すると、ちゃんと index.php が表示されるのですが、index.html は表示できず・・・。
どなたか、解決法を教えてください。よろしくお願いいたします。
590:nobodyさん
11/11/29 10:03:51.45
【条件】
URLリンク(example.com)
にアクセスすると
URLリンク(example.com)
にリダイレクト
URLリンク(example.com)
にアクセスすると何もしない
上記のような条件(URLの一番最後に/を入れる)の.htaccessを適用したところ、
今までダイレクトに"URLリンク(example.com)"にアクセスしていた
読み込めていた<img>タグが表示されなくなりました。
どのようにすれば<img>も見れてURLの最後に/を入れられるのでしょうか?
設定は下記です。
#.htaccess
DirectoryIndex index.cgi
Options FollowSymLinks
RewriteEngine on
RewriteBase /user/test
RewriteRule ^(.+[^/])$ $1/ [R,L] #最後に"/"を入れる
#html
<html>
<head><base href="URLリンク(example.com)"></head>
<body><img src="./img/hoge.jpg"></body>
</html>
#ディレクトリ階層
~/user/test/index.cgi
~/user/test/img/hoge.jpg