http://d.hatena.ne.jp/ALMIC/20060727
こちらのURLを参考にまずは以下を付け加えて、
docomoから動作確認してみましたが全く機能しません。
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} DoCoMo
RewriteRule ^$ http://example.com/a/test.cgi [R]
そこでこちらを参考に、
http://labs.vone.jp/2007/07/17/htaccess/
1行目のOptions FollowSymLinksを追加してみましたが、
今度は「HTTP エラー 403 - アクセス不可」となり、PC、携帯からもアクセスが不可能となりました。
どこに問題があるか教えてください。お願いします。
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_USER_AGENT} .*DoCoMo.* RewriteRule ^$ http://example.com/a/test.cgi [R,L]
として見て下さい。
解説します。
+をつけないと、この.htaccessより上位のレベルでこのディレクトリに対して設定されている内容が解除されてしまいます。
http://59.106.2.6/manual/mod/core.html#options
.*DoCoMo.*は、DoCoMoの前後に何か文字があってもいいってことです。
無くてもいいのかも知れませんが、念の為付けてみて下さい。
Lは、リダイレクトの後、終了するってことです。マニュアルでそうしたほうがいいって書いてあります。
http://www.net-newbie.com/trans/mod_rewrite.html
読みたい場合は、「redirect|R」をこのページ内で検索して、その下の「注意」を読んで下さい。
コード的には問題なさそうなので、お使いの Web サーバーが mod_rewrite が使用可能かどうかを確認してください。
単にモジュールが使えないだけに見えます。
1行目のOptions FollowSymLinksを追加してみましたが、
今度は「HTTP エラー 403 - アクセス不可」となり、PC、携帯からもアクセスが不可能となりました。
こちらは該当の設定が許可されていないのでしょう。
特に mod_rewrite の動作には関係ありません。
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_USER_AGENT} .*DoCoMo.* RewriteRule ^$ http://example.com/a/test.cgi [R,L]
として見て下さい。
解説します。
+をつけないと、この.htaccessより上位のレベルでこのディレクトリに対して設定されている内容が解除されてしまいます。
http://59.106.2.6/manual/mod/core.html#options
.*DoCoMo.*は、DoCoMoの前後に何か文字があってもいいってことです。
無くてもいいのかも知れませんが、念の為付けてみて下さい。
Lは、リダイレクトの後、終了するってことです。マニュアルでそうしたほうがいいって書いてあります。
http://www.net-newbie.com/trans/mod_rewrite.html
読みたい場合は、「redirect|R」をこのページ内で検索して、その下の「注意」を読んで下さい。
実際のディレクトリ構成が分からないので、FollowSymLinks が必要なのかどうかは分りません。
(Webサーバの設定にもよりますし...)
403エラーとの事ですから、リライト動作そのものはできているような気がしますが...
http://www.studyinghttp.net/status_code#Code403
ログには何か残っていませんか?(予定通りの動作をしていないときは、ログを調べるのが近道です)
Webサーバのログを調べてみてはどうでしょう。
できれば、rewrite のログも-> http://www.net-newbie.com/trans/mod_rewrite.html#RewriteLog
なぜアクセスが拒否されたかがわかれば、解決方法がわかると思います。
> docomoから動作確認してみましたが全く機能しません。
こちらも、rewrite のログをとってみれば原因がつかめるのでは?
回答をありがとうございます。
もっとものことだと思うのですが、
個別ログの詳細を調べたことがなく、また調べ方も知らないのです。
簡単なものではないでしょうから、いずれ違うタイトルで相談させていただきます。
(もし簡単な方法なら教えていただきたいですが・・)
補足
前回の私の回答でダメなら、次のように、^$の間に/を入れてみて下さい。
RewriteRule ^/$ http://example.com/a/test.cgi [R,L]
いろいろとありがとうございます。
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} .*DoCoMo.*
RewriteRule ^/$ http://example.com/a/test.cgi [R,L]
前回の回答、そして上記の「/」を入れて動作確認していますが、
希望のページにはドコモから飛べません。
(補足 403エラーは解除されましたが)
.htaccessの設置がおかしいのではと思い、最初の状態、
Options +FollowSymLinks の「+」をとり、
下記のエラーページを作り確認したところ正常にジャンプしました。
ErrorDocument 403 http://b.html
「単にモジュールが使えない」かと今確認している途中です。
サーバは"xrea"
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
>>ただ、これらすべての機能や柔軟性が、欠点や複雑さの元にもなって います。なので、このモジュール全体を一日程度で覚えようなどとは 思わないほうがいいでしょう。<<
なんてサイトに書かれている位なので、一歩一歩チェックしてみましょう。
自宅サーバでなければ、詳細のログを得るのは難しいかも知れませんね。
(Xrea ではApacheのエラーログは取れないみたい...、httpd.conf も変更できないからrewriteのログも不可なようで...)
サーバは、Xrea という事なので、「ホームディレクトリでは」有効になっているはずです。
.htaccess を置いているディレクトリの上位で FileInfo の上書を不可にしていなければですが。大丈夫ですか?
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteEng...
RewriteEngine On RewriteRule ^(.*)$ test.txt
だけ書いた .htaccess とテスト用のページ test.txt をホームディレクトリの public_html に置いて、ブラウザからそのディレクトリにアクセスしてみます。(例えば、http://www.hoge.com/)
正常に動いているのなら、http://www.hoge.com/ でも、http://www.hoge.com/index.html でも test.txt が表示されるはずです。
これがOKなら、後は条件やリダイレクト先を記述すればいいはず。
tezcelloさん回答をありがとうございます。
上記のコードで試したところテスト先にジャンプしました。
懸念のとおりディレクトリの上位にすでに”.htaccess”を置いていたために、
正常に動作しなかったようです。
今回のテストは上位の.htaccessに入れ替えて実行したのですが、
そのまま上位の.htaccessを残したまま下位で機能させるにはどうすればいいのでしょうか?
現状では”ディレクトリの上位でFileInfo の上書を不可”にしてしまっているということなのでしょうか?
自分でも今から調べて見ますが、いいアドバイスがあったらまたお願いいたします。
あっと、書き込もうと思ったら、5番目の回答者様と似たような内容です。ただ、違う点もあるので、重複する内容もありますが、とりあえず、回答します。
cgiの動作設定の問題とも考えられますが、とりあえず、次の実験をして見てくれませんか?
(1)テキストエディタ(Windowsのメモ帳等でもOK)で、This is test.htmと書いて、test.htm という名前で保存する。
(2)作成したtest.htmを.htaccessと同じフォルダに入れる。
(3).htaccessに次のように書く。
※実験する内容以外は、コメントアウトするか、まったく書かないで下さい。行頭に#を入れると、その行はコメントアウトされ、無効になります。
(4)インターネットから、アクセスしてみる。
※アクセスするURLの最後にtest.htmとは書かないで下さいね。そんなことをしたら、リライトのテストになりませんから。
RewriteEngine on RewriteRule ^$ test.htm [L]
This is test.htmと表示されれば、成功ですね。その場合、mod_rewriteは、導入されています。
★成功したものを少しずつ修正していって、失敗したら、失敗した直前に修正したものが原因です。いろいろやって、確かめて見て下さい。
※PCのブラウザ等で動作チェックする場合、キャッシュが邪魔をすることがあります。リロード(再読込)で大丈夫な場合もありますが、一旦ブラウザを閉じて再立ち上げする方が確実です。
なお、
Options +FollowSymLinks の+はとらない方がいいと思います。理由は、最初の回答のとおり。
私もxreaも使っていますが、Options の指定がまったく無くても、動きました。また、^$の中に/は不要でした。
次のURLのページで、mod_rewriteという文字が検索して見つかれば、導入されていると思われます。
http://www.サーバ名.xrea.com/index.php
※サーバ名には、xreaからレンタルしたサーバの記号を入れてください。
※回答受付中もコメントできる設定にするれば、アドバイスし易くなります。他の方からも、多くのアドバイスがもらえる可能性がありますよ。
nandedarouさん、丁寧な説明を何度もありがとうございます。
前の方の返信にも書きましたが、テストをしてみてmod_rewriteは正常に働いているようです。
ただ.htaccessを下位に設置すると効果がなくなることを今調べています。
「FileInfo の上書の不可」というのが問題なのでしょうか・・
また”回答受付中もコメント”について教えてくださってありがとうございます。
今後はそうさせていただきます。
回答をありがとうございます。
サーバはxreaで、mod_rewriteは使えるようです。
(ただ設定に問題があるのでしょうか・・)
試しに違うサーバ(マイティ)でも設置してみましたが、
まったく同じ現象が起きてしまいました。
何か単純なミスをしているような気がするのですが・・