プログラミングのカテで質問をしていたのですが、回答がいただけなかったので、こちらで、再度質問させていただきます。
レンタルサーバー屋さんにも問い合わせたのですが、サポート外ということで、答えてもらえませんでした。
すみませんが、お力をかして下さい。
.htaccsessからmod_rewriteを使って、phpでつくった動的なページを静的にみせようとしているのですが、上手く行かず、行き詰っています。(hoge.php?mod=10をhoge/mod_10.htmlでアクセスできるようにしたい)
うまく動いてくれないので、RewriteEngine onにつづけて、次のような基本的なケースを試してみました。
(1)
RewriteRule ^/(.*)$ http://www.yahoo.co.jp/ [L]
=>反応なし。
(2)
RewriteRule ^(.*)$ http://www.yahoo.co.jp/ [L]
=>#yahooが表示される。ただし、URLがhttp://www.yahoo.co.jp/になる。
(元のulrに引数が有る場合、URLはhttp://www.yahoo.co.jp/?mod=10のようになる。)
(3)
RewriteRule ^(.*)$ http://×××.com/index.php [L]
=>エラーになる。
Apacheに関する知識がほとんどないことですが、私なりの疑問としては、
(1)のように、^/で始まるとマッチしない。
===>参考にしたサイト等は、ほとんど^/ではじめているのになぜ?
(2)では反応するが、urlが書き換えられてしまう、また、引数のみ引き継がれる。
===>URLはもとのまま表示させたい。
(3)自分のトップページを表示させようとすると、エラーが発生する。
===>理由が全く分からない。
以上のような状況ですが、アドバイスをいただきたく、お願いいたします。
No.1
- 回答日時:
閉じちゃってたから答えられなかったよ・・・(^^;;
「http://×××.com」内でやっているのなら「http://×××.com」で受ける事を前提としている。
(rewriteはわからないけど少なくともproxyディレクティブはそう動作する)
つまり(1)は
^/(.*)$ http://www.yahoo.co.jp/
だと、例として「http://×××.com/index.html」でアクセスした場合「http://×××.com/http://www.yahoo.co.jp/」という変換を起こす。(の筈)
http://httpd.apache.org/docs/1.3/mod/mod_rewrite …
これを見る限りでは「http://」付きで別urlにやるにはLだけじゃなく「R」も要る模様。
で(2)なんだけど、そもそも「rewrite」なんだから書き換わるのは当然かと。
元のまま偽れたら(略)。
(3)はそういう意味では
^/$ /index.php
とすべきなんだと思う。
あんまり自信ない。
No.2
- 回答日時:
ごめん。
変換結果は
http://×××.com/http://www.yahoo.co.jp/
じゃなくて
http://×××.comhttp://www.yahoo.co.jp/
かな。(1)で http://×××.com/index.html からだと。
この回答への補足
ご回答ありがとうございます。レスポンスが遅くなってしまいました。
(この質問をわざわざ探し出していただいたのですね。かさねがさねありがとうございます。)
まず、質問の一部に、いらない文字が入っていました。
見づらいので、一応、訂正させていただきます。
(1)
RewriteRule ^/(.*)$ http://www.yahoo.co.jp/ [L]
=>反応なし。
(2)
RewriteRule ^(.*)$ http://www.yahoo.co.jp/ [L]
=>yahooが表示される。ただし、URLがhttp://www.yahoo.co.jp/になる。
(元のulrに引数が有る場合、URLはhttp://www.yahoo.co.jp/?mod=10のようになる。)
(3)
RewriteRule ^(.*)$ http://×××.com/index.php [L]
=>エラーになる。
頂いたご回答をもとに、いろいろ試しているのですが、まだ、うまくいきません。自分なりにもう少し整理して、解決できなければまた質問させていただきます。
時間がかかりそうなので、まずはお礼を申し上げます。
No.3ベストアンサー
- 回答日時:
>(1)のように、^/で始まるとマッチしない。
>===>参考にしたサイト等は、ほとんど^/ではじめているのになぜ?
恐らく参考にしているサイトは、httpd.confにルールを書く前提で記述しているのでは?httpd.confと、.htaccessに書く場合では、書き方が違います。
.htaccessを使う場合、頭に/が付いた絶対パスではなく、.htaccessを置いたディレクトリからの相対パスが評価対象になります。従って、^/(.*)$ではマッチせず「反応なし」になります。
>(2)では反応するが、urlが書き換えられてしまう、また、引数のみ引き継がれる。
>===>URLはもとのまま表示させたい。
この例の場合、違うドメインに変換しているので、URLが書き換えられるのは仕方が無いです。http://xxx.com内で変換するのであれば、このような問題は発生しません。
>(3)自分のトップページを表示させようとすると、エラーが発生する。
>===>理由が全く分からない。
エラーの場合は、エラーログをまず見ましょう。
RewriteRule ^(.*)$ http://×××.com/index.php [L]
だと、http://xxx.com/foobarhoge にアクセスすると、http://xxx.com/index.phpに変換されます。
さらに、http://xxx.com/index.phpは、^(.*)$ にマッチするので、http://xxx.com/index.phpに変換されます。これを無限に繰り返すので、エラーになっているのだと思います。
>(hoge.php?mod=10をhoge/mod_10.htmlでアクセスできるようにしたい)
http://xxx.com/hoge/mod_10.htmlにユーザがアクセスした際に、http://xxx.com/hoge.php?mod=10の内容をユーザに返したいということですよね。
http://xxx.com/.htaccessに、以下のように書けばよいかと。
RewriteRule ^hoge/mod_([0-9]+)\.html$ /hoge.php?mod=$1 [L]
この回答への補足
ご回答ありがとうございます。
頂いたご回答をもとに、試行錯誤中です。
まだ、自分なりに整理できるまで、時間がかかりそうなので、
まずは、お礼を申し上げます。
再度、質問させていただくような気がしますので、
そのときは、よろしくお願いいたします。
解決しました。
>.htaccessを使う場合、頭に/が付いた絶対パスではなく、.htaccessを置いたディレクトリからの相対パスが評価対象になります。
が決め手になしました。
一週間くらい、作業がストップしていたのですが、これで何とかなりそうです。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- 教えて!goo 教えて!goo以外の質問サイトを含め、回答がつく順番を教えて下さい。 2 2022/05/10 13:43
- WordPress(ワードプレス) httpからhttpsへのリダイレクト設定について 2 2022/04/17 09:49
- SSL・HTTPS 知恵袋ページの私的な不具合について 7 2023/01/07 18:46
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- その他(IT・Webサービス) MacとWindows Google検索した時のURL表示の違いについて 1 2022/11/17 10:38
- その他(インターネット接続・インフラ) ブラウザにIPアドレス入力した時 1 2022/06/16 19:08
- その他(IT・Webサービス) GoogleサイトによるHP作成後、皆さんへの通知方法 1 2023/04/04 21:28
- SEO googleサーチコンソールで、重複URLが多数発生、その修正方法について 2 2023/06/23 16:15
- Yahoo!メール yahooメールの検索結果を全て表示するには? 1 2023/05/16 14:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
市販DVD再生ができません。ubun...
-
異常にクラッシュやブルースク...
-
同一LAN内からapacheにアクセス...
-
UNIX(Cシェル)での数値...
-
PC版フォートナイトをインスト...
-
messagesにdaemon errorが多発
-
ネットワーク ロケーション の...
-
オーバークロックソフトのエラ...
-
Ipod 『不明なエラー -50』と...
-
CloudreadyでLinuxのセットアッ...
-
カーネル通信中にエラー
-
gpupdateでのエラーの対処
-
デスクトップの画面にエラー表...
-
デスクトップファイルの再構築...
-
ディスクユーティリティで修復...
-
SentOS 5.4インストールについて
-
[Linux]sysstatについて質問です
-
mrxsmb.sysのエラー?ブルーバ...
-
時刻がかなり狂う。同期エラー...
-
コマンドプロンプトのエラーと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
市販DVD再生ができません。ubun...
-
ログにserver reached MaxReque...
-
マザーボードの赤いランプの意...
-
メールアドレスが生きているか...
-
VMwareにCentOSをインストール...
-
UNIX(Cシェル)での数値...
-
WordpressでAMPのプラグインが...
-
時刻がかなり狂う。同期エラー...
-
Apacheエラー 「(24)Too many o...
-
LyricsMasterでエラーが出てし...
-
特定の Web サイトにアクセスで...
-
ubuntu apt, apt-getのUpdate時...
-
冗長の失敗した場合の対処
-
HDD交換修理したWindows10・...
-
xcpoyコマンドでコピーエラーし...
-
Windows10でフォルダー名が変...
-
同一LAN内からapacheにアクセス...
-
ビット落ちとは一体何なのでし...
-
knoppixによるバックアップ中の...
-
SaAT Netizen(NzSess.exe)のメ...
おすすめ情報