下記のようなパターンで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
①の場合は
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]
と設定すればいいです。
ご自分で導入された Apache でしょうか。
httpd.conf で mod_rewrite の文字を探してください。
mod_rewrite はデフォルトでコメントアウトされています。
#LoadModule rewrite_module modules/mod_rewrite.so
行頭の#を削除して保存し、Apache を再起動すると RewriteEngine が有効になります。
LoadModule rewrite_module modules/mod_rewrite.so
WordPressのパーマリンクのようにイメージしています。
mod_rewrite を使うことで、
存在しないURLでのアクセスが可能になると解釈していますが、
もしかして、この認識が誤っているってことですかね?
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]
というような感じになるのではないかと思いますがいかがでしょうか。
そうなるともうhttpd.confが原因としか考えられません。
2013/08/18 11:50:20httpdの.htaccessの読み込み設定が許可されていないか、もしくはhttpdのrewriteモジュール自体が起動していないので、rewriteruleが有効になっていないと思われます。
httpd.confは設定可能でしょうか。
・.htaccessを読み込むためのallowoverride none を allowoverride all に書き換える
・モジュールを読み込むためのLoadModule rewrite_module modules/mod_rewrite.so を追加する
・リライトモジュール追加のためにAddModule mod_rewrite.c を追加する
以上を確認してみてください。
サーバー環境を全開示できないので、回答いただく際もお手間を取らせてしまいますね。
2013/08/19 10:17:31・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/ になることは成功していまうす。
この質問システムの規約上、お伺いしてよいのかどうか分かりませんが、
「仕事」としてご依頼することは可能でしょうか?直接連絡が取れる手段はありますか??