人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

.htaccessの記述の仕方を教えてください!


http://www.hatenashitumon.com/hatena/fumei

で表示されているページを
http://www.hatenashitumon.comで表示したいです。

何卒、宜しくお願いします。

●質問者: ak
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● sasada
●100ポイント

http://www.hatenashitumon.com/hatena/fumei/hatena/fumei/* へのリクエストがあった場合 http://www.hatenashitumon.com/hatena/fumei/*の内容を返すものと解釈しました。どちらも同じwebサーバーにコンテンツが置いてあるものと仮定します。

http://www.hatenashitumon.com/の.htaccessで、

#LoadModule rewrite_module modules/mod_rewrite.so

とあったら頭の「#」をとって

LoadModule rewrite_module modules/mod_rewrite.so

とします。で、適当な場所で

<IfModule rewrite_module>
RewriteEngine On
RewriteBase /

# 書式:RewriteRule パターン 置換対象 オプション

# /hatena/fumei/* へのリクエストがあった場合 /*の内容を返す
RewriteRule hatena/fumei/(.*) $1 [R=301,L] 
</IfModule>

と記述します。
いかがでしょうか。


rouge_2008さんのコメント
トップページにアクセスがあった場合に「/hatena/fumei」を表示したいのだと思います。 リダイレクトさせるのか、ページ内容の置換だけするのかは分かりませんが・・・ 「LoadModule」ディレクティブはサーバー設定ファイルにのみ記述しますので、「.htaccess」ファイルに記述されている事はないと思います。 http://httpd.apache.org/docs/2.4/ja/mod/mod_so.html#loadmodule >> <span style="font-weight:bold;font-size:medium;">LoadModule ディレクティブ</span> |説明:|オブジェクトファイルやライブラリをリンクし、使用モジュールの リストに追加する| |構文:|LoadModule module filename| |コンテキスト:|サーバ設定ファイル| |ステータス:|Extension| |モジュール:|mod_so| << http://httpd.apache.org/docs/2.4/ja/mod/directive-dict.html#Context >> <span style="font-weight:bold;font-size:medium;">コンテキスト</span> これは、サーバの設定ファイル中のどこでディレクティブが有効なのかを示します。 次に示す値が一つ以上カンマ区切りで列挙されています。 <span style="font-weight:bold;">サーバ設定ファイル</span> これは、サーバ設定ファイル (例えば、httpd.conf, srm.conf, access.conf) 内では使用できますが、 <VirtualHost> や <Directory> の中では 使用できないことを示します。 .htaccessファイルでの使用は許可されていません。 <span style="font-weight:bold;">バーチャルホスト</span> これは、サーバ設定ファイルの <VirtualHost> の中で使用できることを示します。 <span style="font-weight:bold;">ディレクトリ</span> これは、サーバ設定ファイルの <Directory>, <Location>, <Files>, <Proxy> コンテナの中で、 設定セクション で説明されている制限の下で使用できることを示します。 <span style="font-weight:bold;">.htaccess</span> これは、ディレクトリ毎の .htaccess ファイル内で 使用可能であることを示します。 ただ、上書き の設定によっては、処理されないかもしれません。 ディレクティブは指示されたコンテキストでのみ許可されます。 他の場所で使おうとすると、サーバがそのコンテキストを正しく扱えなく なるような設定エラーが発生するか、サーバがまったく動作しなくなる、 すなわち、サーバが起動しなくなるということになります。 ディレクティブの有効な位置は、実際は挙げられているコンテキストの 論理和 (訳注: Boolen OR) になります。言い換えると、 "サーバ設定ファイル、.htaccess" で有効だと 記されているディレクティブは httpd.conf ファイルと .htaccess ファイルとで有効ですが、 <Directory> や <VirtualHost> の中では使用できません。 << 確認はしていませんが、回答の記述を追加した場合ループが発生しないでしょうか? アクセスしたページと同じページを返す設定になっているように思います。

sasadaさんのコメント
>> 「LoadModule」ディレクティブはサーバー設定ファイルにのみ記述しますので、「.htaccess」ファイルに記述されている事はないと思います。 << そうですね。自分がhttpd.confで実験してたものでつい間違えました。 ご指摘ありがとうございます! 記述は >|| <IfModule rewrite_module> RewriteEngine On RewriteRule hatena/fumei/(.*) $1 [R=301,L] </IfModule> ||< で、いけるようですね。 再帰はしないようです。

rouge_2008さんのコメント
確認ありがとうございます。 ループはしないようですが、「http://www.example.jp/hatena/fumei/*」を用意して置かないと表示エラーになるようです。 質問の解釈が私とid:sasadaさんでは違っているので、これ以上は質問者さんの返信を待ってからにした方が良さそうです。 >> http://www.example.jp/hatena/fumei ↑ で表示されているページを http://www.example.jpで表示したいです。 << 「http://www.example.jp/hatena/fumei/hatena/fumei/*」へのアクセスがあった時ではなく、トップページへのアクセスで「http://www.example.jp/hatena/fumei」の内容を返したいのだと解釈しています。

akさんのコメント
皆様解答誠にありがとうございます。 また、私の質問に至らない点があり申し訳ございません。 実現させたいことは、 ”トップページへのアクセスで「http://www.example.jp/hatena/fumei」の内容を返す” です。 そして、<link rel="canonical" href="http://www.example.jp">を記述しようと考えていました。 ちなみに、サーバーがレンタルサーバーなのでhttpd.conf関係の設定もできません。 (元々サーバーまわりは、ほとんど知識はありませんがw涙)

akさんのコメント
恐れ入ります、 <IfModule rewrite_module> RewriteEngine On RewriteBase / RewriteRule ^http://www.example.jp$ http://www.example.jp/hatena/fumei$1 [R=301,L] </IfModule> 色々試して見て、↑のように試みましたがダメでした・・・ おかしな記述ありますでしょうか?

sasadaさんのコメント
ご希望の意味を取り違えておりました。 先ほどのコメント通りの動作をさせるには、 >|| RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !/hatena/fumei/ RewriteRule ^/(.*)$ /hatena/fumei/$1 [L] ||< とするのが良いかと思います。

akさんのコメント
何度も解答をいただき誠にありがとうございました。 いただいた内容で確認したいと思います。 今後とも、何卒、宜しくお願いします。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ