.htaccess質問コーナー Part7
- 1 :Name_Not_Found:2008/03/20(木) 23:58:35 ID:???
- .htaccessファイル(「分散設定ファイル」)の書き方・使い方などに関するスレです。
ドキュメント、参考サイトへのリンクなどは>>2-3辺り。
前スレ
.htaccess質問コーナー Part6
http://pc11.2ch.net/test/read.cgi/hp/1176912246/
- 498 :Name_Not_Found:2008/07/07(月) 21:23:46 ID:???
- >>482 すっげぇ馬鹿げた方法ならあるぞwww
例えば /home/tarou/www/ がドキュメントルートで
/home/tarou/www/php/ にPHPの.cgiを置くとする
/home/tarou/www/cli.cgi などのfileを置いて
/home/tarou/www/php/.htaccess に
Action test-php /cli.cgi
AddHandler test-php .cgi
# の2行を記述する /cli.cgi ってのは勿論ドキュメントルートに置いた cli.cgiだ
# /~tarou/cli.cgi とか喪前の環境に合わせてくれ
その cli.cgi の中身は (perl で書くと)
#!/usr/bin/perl
$script = '/home/tarou/www' . $ENV{'REDIRECT_URL'};
foreach(`$script`)
{if($cnt){print;} # 最初のヘッダ(空行まで) 表示しない
if(/^\s*$/){$cnt++;}
}
__END__
これでうちのfedora9では ヘッダの表示を消すことが出来たぞ
勿論上に書いた .htaccess の2行をコメントアウトすると ヘッダが画面に出てくる
馬鹿げている意味は判るな? リダイレクトさせておいて わざわざリダイレクト元の
スクリプトを子プロセスで実行使用ってンだから
、、、、ってアホな事考えさせるな>482
スクリプトから echo "Content-type: text/html\n\n"; 消せば済む話ジャン
- 499 :Name_Not_Found:2008/07/07(月) 21:35:30 ID:???
- >>498 環境変数 REDIRECT_URL や REQUEST_URI さえ渡ればいいんだから
.htaccessの方は rewriteとかでもたぶん出来るな
試してないけど
RewriteRule ^php/.*\.cgi$ /cli.cgi [L]
- 500 :おでん:2008/07/07(月) 21:45:12 ID:wrYSbZO3
- サーバで
http://ex.com/index.php/test
を
http://ex.com/test
でアクセスできるようにしたいのですが、mod_rewriteに何を書いたらよいか教えてください。
普通にアクセスするのだと404エラーになりました。
- 501 :Name_Not_Found:2008/07/07(月) 21:45:53 ID:???
- >>500
イヤです
- 502 :おでん:2008/07/07(月) 21:46:55 ID:wrYSbZO3
- お願いします(´ω`)
- 503 :Name_Not_Found:2008/07/07(月) 21:59:16 ID:???
- .htaccess なら
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.php/
RewriteRule ^(\w*)$ /index.php/$1 [L]
これでいいか?
お礼は姉ちゃんのパ*ツ な
って ちょ、おま、お袋の んなもの寄越すな
- 504 :482:2008/07/07(月) 23:28:16 ID:KghusoCJ
- レスありがとうございます!!
cgiをイジれば、そのような手段があるんですね!?
ただ、あまり知識に自信がないので、
できればcgiではなく、htaccessに追記するだけでヘッダ出力をなくしたいのですが、
そんな簡単にはできないですよね!?
- 505 :Name_Not_Found:2008/07/08(火) 14:43:17 ID:c/gC3o6m
- ルートディレクトリと幾つかのサブディレクトリに
それぞれindex.htmlが存在している状況で
ルートディレクトリのindex.htmlのみにForceType application/x-httpd-phpを指定したい時は
.htaccessファイルをどのように配置&記述すればいいのでしょうか
ルートディレクトリ上の.htaccess単体でこれを実現する方法はありますか?
- 506 :Name_Not_Found:2008/07/08(火) 15:29:30 ID:+MI0bJGF
- >>478みたいな現象って
もうサーバがぶっ壊れてるんじゃね?
新しいの購入するのがいいと思う。
- 507 :Name_Not_Found:2008/07/08(火) 20:30:50 ID:???
- http://example.com
http://example.com/
に人が来た時に、強制的に
http://example.com/index.php
に飛ばしたいのですが、どう記述すれば良いでしょうか?
- 508 :Name_Not_Found:2008/07/08(火) 20:42:38 ID:JSvLyOV0
- RewriteRule
- 509 :Name_Not_Found:2008/07/08(火) 20:50:02 ID:???
- RewriteEngine On
RewriteBase /
RewriteRule http://example.com http://example.com/index.php
RewriteRule http://example.com/ http://example.com/index.php
こうですか?
index.phpというファイルは存在しているのですが、大丈夫でしょうか?
- 510 :Name_Not_Found:2008/07/08(火) 21:01:02 ID:???
- ローカルにテスト環境立てて自分で試してから言えカス
- 511 :Name_Not_Found:2008/07/08(火) 21:02:23 ID:???
- ですよね〜^^
アクセスが下がる明け方まで待ってから試すことにします。
現状鯖が死んでてどうにもなりません
- 512 :Name_Not_Found:2008/07/08(火) 21:34:00 ID:???
- >>509
RewriteRule でやるなら >>503 のRewriteRuleを
RewriteRule ^$ /index.php [R]
だが
Directoryindex index.php
とすれば index.php にアクセスするんで それで済む話ではないのか?
- 513 :Name_Not_Found:2008/07/08(火) 21:53:40 ID:???
- >>512
ありがとうございます。
先ほどそう書いてアップしたので
確認しようと思ったらまた落ちました・・・。
なぜ書き換えようとしているかと言うと
http://example.com にIE6で繋ぐとファイルを保存になってしまうんです。
これはキャッシュプラグインを使っているからなのですが、
http://example.com/index.php だとIE6でも閲覧できます。
だから http://example.com に来たアクセスを、
全部 http://example.com/index.php に飛ばしたいのです。
なお、キャッシュを使わないと
使用しているCMSが動的なのでサーバが今よりもダウンしてしまいます。。。
- 514 :Name_Not_Found:2008/07/08(火) 22:28:53 ID:???
- >>513 ほうほう
512のRewriteRuleならRewriteCond行も要らないな
RewriteEngine on
RewriteRule ^$ /index.php [R]
の2行だけでいいや
- 515 :Name_Not_Found:2008/07/08(火) 23:12:41 ID:???
- >>514
ありがとうございます。さきほど試してみたけどダメでした。。。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
AddDefaultCharset UTF-8
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*s=.*
RewriteCond %{QUERY_STRING} !.*attachment_id=.*
RewriteCond %{HTTP_COOKIE} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*s=.*
RewriteCond %{QUERY_STRING} !.*attachment_id=.*
RewriteCond %{HTTP_COOKIE} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html [L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteRule ^wp-trackback\.php.*$ - [F,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
ここのどこに入れたらいいと思いますか?
- 516 :Name_Not_Found:2008/07/09(水) 05:00:52 ID:???
- >>515
少々補足要求が必要
これって初回のアクセス時のみhttp://example.com に来たアクセスを、
全部 http://example.com/index.php に飛ばしたいって事?
それともTOPPAGEにきたのを全部? (<=一応そう書いてあるが機能が無意味になりそうだが?)
- 517 :Name_Not_Found:2008/07/09(水) 07:35:11 ID:???
- >>516
トップページにきた人だけです。
個別ページは http://example.com/123.html と表示させています。
で、このページはIE6でも閲覧できます。
トップだけなぜかファイルを保存になってしまうので困っています。
よく企業のサイトで
http://example.com/ に行ったら http://example.com/index.html
と表示されるサイトがありますよね? ああいうのにしたいのです。
それで解決になるかどうかは試してみないとまた分かりませんが・・・
- 518 :Name_Not_Found:2008/07/09(水) 16:20:35 ID:???
- <IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^/?$ /index.php [R=302,L]
## 上の2行を追加(.htaccess またはhttpd.conf 兼用の記述です)
## それから 2箇所ある %{REQUEST_METHOD} !=POST 行の上にも
RewriteCond %{REQUEST_URI} !^/index.php
# ↑を追加してみてください あわせて RewriteCondの同じ記述が 3行 RewriteRuleの追加が1行です
- 519 :Name_Not_Found:2008/07/09(水) 16:52:22 ID:???
- 横レス失礼します。質問です。
「携帯端末(複数、UAで判別)以外を特定のページに飛ばす」
「特定のIP(ホストでもUAでも)を制限する」
の2つを組み合わせたいと思っているのですが、どのようにすればいいのでしょうか?
携帯を特定のページに飛ばす方法はすぐに見つかるのですが、携帯以外(PC等)を特定のページに飛ばす方法は見つけられませんでした。
今は携帯以外をErrorDocument 403で無理矢理振り分けているのですが、最近ロボットが酷くて特定のアクセスも制限したくなってきました。
ご教示お願いします。
- 520 :Name_Not_Found:2008/07/09(水) 19:41:16 ID:???
- 見つからないって悪い冗談だろ・・・
- 521 :Name_Not_Found:2008/07/09(水) 20:16:13 ID:???
- >>519
>携帯を特定のページに飛ばす方法
これをPCに当てはめたら、
> 携帯以外(PC等)を特定のページに飛ばす方法
になるんだけど。
それすらどうすれば良いかわからないなら、手を出さないほうがいい。
やめておけ。
- 522 :Name_Not_Found:2008/07/10(木) 12:30:29 ID:???
- >>518
ありがとうございます。
先ほど指示通りに挿入して見事に反映できました。
が、今度は個別記事でエラー吐くようになってしまいました。orz
他の方法で負荷分散を頑張りたいと思います。
せっかく手助けいただいたのに申し訳ありません。
ありがとうございました。
- 523 :Name_Not_Found:2008/07/10(木) 16:48:34 ID:???
- >>505 「放置質問に答えてみようキャンペーン」
言葉どおりの事だと、まんドクサ!
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/\w*\.php
RewriteRule ^(\w+)\.html?$ /$1.php [L]
これでどうだ?
要するに URL上は .htmだが 実は .phpにアクセスする仕組み
例えば http://example.jp/test.htm (test.htmlでもOK)にアクセスすると
URL欄はそのままだが 実は
http://example.jp/test.php にアクセスする仕組み
test <=の部分は半角英数字と _ の組み合わせなら何でもOK
eroieroi.htm =>eroieroi.php
但しこれだと 対応した名前のphpを一つ一つ用意する必要がある
一つの php 例えば index.php でパラメーターに応じて いろいろなページを表示するなら
RewriteRule 行を
RewriteRule ^(\w+)\.html?$ /index.php?$1 [L]
こうすれば
/kitiku.htm => /index.php?kitiku
/tinnkasu.htm =>/index.php?tinnkasu
んで queryに応じたページを表示する
ま、今はやりの 動的=>静的変換だな
- 524 :Name_Not_Found:2008/07/12(土) 06:29:56 ID:tIvDO2Yb
- .htaccessの設定でエンコードに変換?
(例 http://www.○○○.com/search.cgi?keywords=%82%A0%82%A2%82%A4%82%)
みたいなのをさせない方法はありませんか?宜しくお願いします。
- 525 :Name_Not_Found:2008/07/12(土) 14:37:01 ID:???
- >>524 URLエンコードされたのをデコード(普通の文章に)するって事かな?
なら RewriteMap だな
http://wiki.bit-hive.com/tomizoo/pg/mod_rewrite%20-%20RewriteMap
- 526 :519:2008/07/12(土) 15:00:55 ID:???
- >>520-521
有難うございます。
一応自分の環境で確認した限りでは、これで思惑通りできているかのようには感じているのですが、
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !DoCoMo [NC]
RewriteCond %{HTTP_USER_AGENT} !KDDI [NC]
RewriteCond %{HTTP_USER_AGENT} !Up.Browser [NC]
RewriteCond %{HTTP_USER_AGENT} !Softbank [NC]
RewriteCond %{HTTP_USER_AGENT} !Vodafone [NC]
RewriteCond %{HTTP_USER_AGENT} !J-PHONE [NC]
RewriteCond %{HTTP_USER_AGENT} !DDIPOCKET [NC]
RewriteCond %{HTTP_USER_AGENT} !Nokia [NC]
RewriteCond %{HTTP_USER_AGENT} !MOT- [NC]
RewriteCond %{HTTP_USER_AGENT} !L-mode [NC]
RewriteRule ^$ /other.html [R,L]
deny from 拒否するIP
(携帯をindex.html PC等をother.htmlにしています)
無駄な動きをしていないか?とか無限ループしないだろうか?等が心配ではあります。
もし記述上問題等がありましたら、ご指摘いただけると助かります。
あと、各サブディレクトリにRewriteEngine Offを記述した.htaccessを置いた方がいいのでしょうか?
- 527 :Name_Not_Found:2008/07/12(土) 23:10:00 ID:???
- 質問です、よろしくお願いします。
xxx/yyy.htmをxxx/yyyでアクセスできるように設定したいのですが、
どのようにすればよいのでしょうか?
ちなみにロリポップではなにも設定しないで上記が可能ですが、
今回契約したハッスルサーバーではできずに困っております。
- 528 :Name_Not_Found:2008/07/12(土) 23:59:30 ID:???
- >>527
お断りします
- 529 :Name_Not_Found:2008/07/13(日) 00:23:53 ID:???
- example.com/xxx/yyyって普通はexample.com/xxx/yyy/と判断されるんじゃ・・・
- 530 :Name_Not_Found:2008/07/13(日) 09:52:36 ID:???
- 確か、
example.com/xxx/yyy
というファイルを探して、それがないと、
example.com/xxx/yyy/
を探すという処理じゃなかったっけ
example.com/xxx/yyy
できたら、
example.com/xxx/yyy.html
とするようにはできるけど、これをやってしまうと、
example.com/xxx/yyy
で
example.com/xxx/yyy/index.html
を表示することはできなくなるね。
527のやりたいことが、そもそもオカシイと思うけど。
- 531 :Name_Not_Found:2008/07/13(日) 15:39:59 ID:???
- >>527 それはMultiviews だな
http://httpd.apache.org/docs/2.2/ja/content-negotiation.html#multiviews
Options All multiviews
で有効になるけど .htaccess にOptions を許可しているところって少ないのでは?
http://httpd.apache.org/docs/2.2/ja/mod/core.html#allowoverride
まあ、 .htaccess に上記のを記述して 500エラーに成ったら
Rewriteで擬似的にやるか、諦めるか、
optionsを許可またはmultiviewsを設定してある別の貸し鯖屋に変えるしかないな
- 532 :Name_Not_Found:2008/07/13(日) 16:04:17 ID:???
- >>525
RewriteMapは.htaccessのみを触れる人では設定できないですぅ。
リライトが使える上に内部関数まで設定が済んでいるサーバは
とても希少過ぎる気がするですっ。
- 533 :Name_Not_Found:2008/07/13(日) 16:57:46 ID:???
- >>532 え?マジ?
と思って
http://httpd.apache.org/docs/2.2/ja/mod/mod_rewrite.html#rewritemap
を見たら、、、
Context: server config, virtual host
と .htaccess が無いな
一応念のため TESTサーバーで .htaccess に
RewriteEngine on
RewriteLock /home/hoge/tmp/map.lock
RewriteMap escape-map prg:/home/hoge/script/escape.pl
RewriteRule ^/(.+)/dec/(.*)$ /$1/index.php?pg=${escape-map:$2} [L]
と記述したら 500エラーで error_logには not allowed here(ここに記述することを許可されていません)
と言うことで 532が正解 .htaccessじゃ出来ません
で、524のやりたいのが ひょっとしてアクセス解析のログに 日本語で記録すると言う事なら
アクセス解析用のスクリプト内部で perlなら
s/%([a-f\d]{2})/pack("C", hex($1))/ieg;
とかでデコードして記録すればいいのでは?
- 534 :Name_Not_Found:2008/07/14(月) 16:32:10 ID:???
- >>524
533だが 、 じゃなくてやりたいことは自分のサイト内のFORM=>cgiへの送信時に平文で送りたいって事なら
FORM タグの中で enctype を指定
http://www.tagindex.com/html_tag/form/form_enctype.html
どっちみち .htaccess じゃない
- 535 :Name_Not_Found:2008/07/14(月) 16:34:21 ID:OidOf6hQ
- 例えば
/aaa/bbb/
このようなディレクトリ構造で、aaaディレクトリに.htaccessでアクセス制限を掛け、
bbbのフォルダのindex.htmlだけ許可したい場合、
<Files ~ "^(index\.html)$">
allow from all
</Files>
このように記したものをbbbのディレクトリに配置すれば
「index.html」に制限がかかると思います。
しかし、スラッシュで終わるアドレスでアクセスした場合、
きちんとアクセス制限が掛かりません。
スラッシュで終わるアドレスでアクセス制限をかける方法はありますか?
- 536 :Name_Not_Found:2008/07/14(月) 16:38:49 ID:???
- 表現の仕方がちょっと悪かったかもしれませんが、アクセス"許可"制限です。
- 537 :Name_Not_Found:2008/07/14(月) 17:49:32 ID:???
- >>535
DirectoryIndex を index だけセットしてindex.htmlを表示させていると
<Files index.html>等の設定をスルーしてしまうみたいですぅ。
- 538 :Name_Not_Found:2008/07/14(月) 18:27:04 ID:???
- で、そのindexだけでindex.html表示できるのがOptionsのMultiViewsのおかげであって、
MultiViewsを有効にしたときの副作用な気がするですぅ。
- 539 :Name_Not_Found:2008/07/14(月) 20:57:43 ID:3Cy38wgf
- アクセス拒否したいIPが固定ではなかったので、
特定のホストとHTTP_USER_AGENTでアクセス拒否をかけたいと思っています。
RewriteEngine on
RewriteCond %{REMOTE_HOST} ^.*.example\.ne\.jp$ [NC]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4\.0 \(compatible; MSIE 6\.0; Windows NT 5\.1; SV1; \.NET CLR 1\.1\.4322\)$ [NC]
RewriteRule ^.*$ - [F]
としたのですが、500エラーがかえってきてしまいます。
こういう場合どうやって記述すればよいでしょうか?
- 540 :Name_Not_Found:2008/07/14(月) 21:08:45 ID:???
- >>539
スペースが入る場合は、""で囲め
- 541 :Name_Not_Found:2008/07/14(月) 22:25:18 ID:???
- >>540
横からw
こんな感じでよいですか?
"^Mozilla/4\.0 \(compatible; MSIE 6\.0; Windows NT 5\.1; SV1; \.NET CLR 1\.1\.4322\)$"
- 542 :Name_Not_Found:2008/07/14(月) 22:28:59 ID:???
- この世にはIEユーザーしかいないと思っているんですねよくわかりますフィリピンではFirefoxのシェア50%ぐらいなのに死ねば良いと思うよ
- 543 :Name_Not_Found:2008/07/14(月) 22:44:44 ID:???
- 539です。
>>540
ありがとうございます。
RewriteCond %{HTTP_USER_AGENT} ^"Mozilla/4\.0""\(compatible;""MSIE""6\.0;""Windows""NT""5\.1;""SV1;""\.NET""CLR""1\.1\.4322\)"$
としてみて、500エラーが返って来なくなったんですが、これでよかったのでしょうか?
ためしに自分のUA(上記とは違いますが)でもやってみたのですが普通に表示されてしまったので
効果があるのかわからなかったのです。
- 544 :Name_Not_Found:2008/07/20(日) 12:51:05 ID:???
- こんにちは、質問させてください
たまにアクセス解析のリモートホストの欄がIPアドレスだったり空白だったりしますが
あれはどういった手段でアクセスしている人なのでしょうか?
リモートホストが空白の人を弾くことはできますか? よろしくお願いします
- 545 :Name_Not_Found:2008/07/20(日) 17:29:39 ID:???
- >>544
リモートホストが空白の環境に対して
RewriteCond %{REMOTE_HOST} ^$
リモートホストが IPアドレスは何か特別な手段を使っているわけではなく、
普通のことですよ
ISP によって仕様が異なる、程度に思っておけばいいと思います
↓以下、詳しい方の解説
- 546 :Name_Not_Found:2008/07/20(日) 18:25:26 ID:???
- スレチだしまんどくせ。
- 547 :544:2008/07/21(月) 01:47:52 ID:???
- >>545
RewriteCondというワードを元に検索したら知りたい内容のページを
探し当てることができました
これでやっと迷惑な人を拒否することができます
本当にありがとうございました
215 KB
[ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
Fedora (Core) 総合スレッド Part 42 [Linux]
MySQL 総合 Part14 [データベース]
【反論禁止の】教えてgooをマターリヲチ48【もどかしさ】 [ネットwatch]
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 05.0.7.3 2008/07/26
FOX ★ DSO(Dynamic Shared Object)