mod_rewriteによるURL書き換え


下記のようなパターンでURLを書き換えたいのですが可能でしょうか?
可能であれば、htaccessファイルへの記述方法を教えて下さい。

※Apacheバージョン 2.2.22 です。


現在のURL
http://hogehoge.com/shop/user_data/aaa.php


置き換えたいURL①
http://hogehoge.com/okikae/bbb.html

置き換えたいURL②
http://hogehoge.com/ccc.html

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/08/16 16:05:44
  • 終了:--

回答(2件)

id:holoholobird No.1

holoholobird回答回数448ベストアンサー獲得回数792013/08/16 19:26:49

①の場合は
RewriteEngine on
RewriteRule ^/okikae/bbb\.html$ /shop/user_data/aaa.php [R=301,L]

②の場合は
RewriteEngine on
RewriteRule ^/ccc\.html$ /shop/user_data/aaa.php [R=301,L]

となります。



----
追記です。
もしも、http://hogehoge.com/aaa.htmlにアクセスしたときに
http://hogehoge.com/shop/user_data/aaa.phpの内容をさせたいのであれば、

①の場合は
RewriteEngine on
RewriteRule ^/okikae/(.*)\.html$ /shop/user_data/$1.php [R=301,L]

②の場合は
RewriteEngine on
RewriteRule ^/(.*)\.html$ /shop/user_data/$1.php [R=301,L]

と設定すればいいです。

他3件のコメントを見る
id:holoholobird

そうなるともうhttpd.confが原因としか考えられません。
httpdの.htaccessの読み込み設定が許可されていないか、もしくはhttpdのrewriteモジュール自体が起動していないので、rewriteruleが有効になっていないと思われます。

httpd.confは設定可能でしょうか。
・.htaccessを読み込むためのallowoverride none を allowoverride all に書き換える
・モジュールを読み込むためのLoadModule rewrite_module modules/mod_rewrite.so を追加する
・リライトモジュール追加のためにAddModule mod_rewrite.c を追加する

以上を確認してみてください。

2013/08/18 11:50:20
id:tenmillion

サーバー環境を全開示できないので、回答いただく際もお手間を取らせてしまいますね。

・htaccessの読み込みは可能です。www統一などで有効な事を確認しています。
・phpinfoの出力から、「Loaded Modules」欄に、「mod_rewrite」が表示されていることを確認しています。
・「AddModule mod_rewrite.c」のことなのか分かりませんが、

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule dir1/(.*) dir2/$1 [R,L]
</IfModule>

この記述で、hogehoge.com/dir1/ へのアクセスが hogehoge.com/dir2/ になることは成功していまうす。


この質問システムの規約上、お伺いしてよいのかどうか分かりませんが、
「仕事」としてご依頼することは可能でしょうか?直接連絡が取れる手段はありますか??

2013/08/19 10:17:31
id:fowling-piece No.2

SPANIEL回答回数0ベストアンサー獲得回数02013/08/19 09:41:26

ご自分で導入された Apache でしょうか。
httpd.conf で mod_rewrite の文字を探してください。
mod_rewrite はデフォルトでコメントアウトされています。

#LoadModule rewrite_module modules/mod_rewrite.so

行頭の#を削除して保存し、Apache を再起動すると RewriteEngine が有効になります。

LoadModule rewrite_module modules/mod_rewrite.so
他2件のコメントを見る
id:tenmillion

WordPressのパーマリンクのようにイメージしています。

mod_rewrite を使うことで、
存在しないURLでのアクセスが可能になると解釈していますが、
もしかして、この認識が誤っているってことですかね?

2013/08/19 15:23:14
id:fowling-piece

WordPressのパーマリンクのようにイメージしています。

ということでしたら書き換えの方向を勘違いなされているのではないかと思います。

RewriteRule アクセスしてくるURL 実際に有効なURL オプション

という形式になりますから RewriteRule の次が存在していなくてもOKなURLで、その次が有効なURLになっている必要があります。
例えば http://hogehoge.com/okikae/bbb.html のURLでアクセスされるとした場合、「bbb」が aaa.php のパラメータになっているはずです。

RewriteRule ^/okikae/(.*)\.html$ /shop/user_data/aaa.php?parameter=$1 [R=301,L] 

というような感じになるのではないかと思いますがいかがでしょうか。

2013/08/19 22:06:26
  • id:rouge_2008
    現在のURLと置き換えたいURL2つともに共通する部分がなく、ファイル名もそれぞれ「aaa.php」「bbb.html」「ccc.html」とそれぞれ違いますが、どのようなパターンになっているのでしょう?
    URL書き換えのルールに一定のパターンがないのでしたら、リダイレクト元は「.htaccess」設置ディレクトリからのパスを指定し、リダイレクト先には直接URLを指定するしかありません。
  • id:dawakaki
    現在のURL、置き換えたいURL①、置き換えたいURL②の3者に共通項がありません。
    代替案はありますが、残念ながら回答拒否されています。

    自動回答拒否で「一人以上」に設定していませんか? 自動回答拒否「利用する」を解除してみて下さい。
    解除方法は下記を見て下さい。
    http://q.hatena.ne.jp/help/mypage_config

    ベストアンサーが多い人の名前を回答拒否に入れている悪質ユーザーがいて(運営妨害してますね)、そのときに自動的に回答拒否されるみたいです。
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません