mod_rewriteによるURL書き換えがうまく動作しない

このQ&Aのポイント
  • mod_rewriteを使用して.htaccessファイルでURLの書き換えを行いたいが、うまく動作してくれない。具体的には、http://www.aaaaaaa.jp/php/user/bbb/index.phpをhttp://www.aaaaaaa.jp/bbb/に変更したいが、うまくいかない。どのように記述すれば動作するか教えてください。
  • 上記のRewriteRuleの記述では、http://www.aaaaaaa.jp/php/user/bbb/index.phpのままです。
  • mod_rewriteを使用して.htaccessファイルでURLの書き換えを行いたいが、うまく変更できない。http://www.aaaaaaa.jp/php/user/bbb/index.phpをhttp://www.aaaaaaa.jp/bbb/に変更する方法を教えてください。
回答を見る
  • ベストアンサー

mod_rewriteについて

.htaccessにて、mod_rewriteを使用して、URLの書き換え を行いたいのでがうまく動作してくれません。 上記の記述で http://www.aaaaaaa.jp/php/user/bbb/index.phphttp://www.aaaaaaa.jp/bbb/ に変更したいのですが どのように記述したら、動作するのでしょうか。 ご教授をお願いします。 RewriteEngine on RewriteRule ^bbb$ /php/user/bbb/index.php [L] 上記だと、http://www.aaaaaaa.jp/php/user/bbb/index.php のままです。

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> http://www.aaaaaaa.jp/php/user/bbb/index.php を > http://www.aaaaaaa.jp/bbb/ に変更したい 実際の動作は逆じゃないですか? http://www.aaaaaaa.jp/bbb/​ にアクセスした時に、 http://www.aaaaaaa.jp/php/user/bbb/index.php を表示させる、と言う事ではないでしょうか。 .htaccessの設置場所はhttp://www.aaaaaaa.jp/配下になるとおもいます。 また、直たたき対策として、http://www.aaaaaaa.jp/php/user/bbb/にアクセスした場合($_SERVER["REQUEST_URI"]等で検出)http://www.aaaaaaa.jp/bbb/へリダイレクトするようにしておけば良いかもしれません。 参考まで。

関連するQ&A

  • mod_rewriteによるURLの書き換え

    mod_rewriteを使ってURLの書き換えを行いたいのですが、どうしてもうまくいきません…。 http://***.main.jp/rewrite/name/index.shtml?total=num にアクセスされた場合に http://***.main.jp/rewrite/php.php?title=name?total=num に切り替えて処理させたいと思っています。 .htaccessには RewriteEngine on RewriteRule ^(.*)/index\.shtml\?total=([0-9]*)$ rewrite/php.php?title=$1&total=$2 このように記述したのですが、書き換えが行われずにindex.shtmlの内容が表示されてしまいます。 どうか、ご教授いただけませんでしょうか? サーバーはロリポップを使用しています。

  • CentOSでhtaccessを使用してmod_rewrite

    CentOSで、htaccessを使用してmod_rewriteを利用したいのですが、いまいちどうしたらいいのかがわかりません。 動的URLを静的URLに変換したく、 htaccessに RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?t=$1 [L] と書きこみました。 すると404エラーがでます。 試しに #RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?t=$1 [L] とコメントアウトしたところ、通常に表示されました。 RewiteEngine on が何かしらの影響を与えていると思うのですが、 対策がよくわからないので質問いたしました。 ちなみにhttpd.confの設定は完了しています。 LoadModule rewrite_module modules/mod_rewrite.so と記述。

  • mod_rewriteについて

    mod_rewriteの質問です。 RewriteEngine on RewriteCond %{TIME_DAY}.html -s RewriteRule index.html test.php RewriteRule index.html %{TIME_DAY}.html と記述しているのですが、 %{TIME_DAY}.html が存在するのに、 RewriteCond部分でないと判定され、 %{TIME_DAY}.html が読まれてしまいます。 RewriteCond部分の条件部分の記述方法が間違っているのでしょうか?

  • mod_rewriteの書き方について

    よろしくお願いします。 サーバーをhttp://80codeを使っています。 今回、mod_rewriteを使って静的アドレスにしようとしていますが、 404エラー(見つかりません)がでてしまい、うまく表示されません。 設定が間違っていますでしょうか? http://repo.teki2.com/に両方のファイルとも設置しています。 接続しに行っているアドレスは、http://repo.teki2.com/1/ です。 http://repo.teki2.com/index.php?mode=1 だとうまくいきます。 .htaccessの内容 RewriteEngine on RewriteRule ^/([0-9a-zA-Z]+)/$ /index\.php?mode=$1 [L] index.phpの内容 <?php echo $mode; ?> よろしくお願いします。

    • 締切済み
    • CGI
  • mod_rewriteの書き方について

    mod_rewriteの書き方について いつもお世話になっております。 mod_rewiteについて質問させていただきます。 複数の設定をしたいのですが、404のエラーが出てしまい思っている動作になりません。 -------------------------------------------------- RewriteEngine on (1) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule hoge/(.*)\/(.*)\/(.*)\/(.*)\.html$ /hoge/$1/$2.php?$3=$4 [L] RewriteRule hoge/(.*)\/(.*)\/(.*)\/(.*)\/(.*)\/(.*)\.html$ /hoge/$1/$2.php?$3=$4&$5=$6 [L] (2) RewriteRule (.*)\.html$ /$1.php [L] -------------------------------------------------- 上記の設定を記載しております。 (1)はパラメーターがあった場合、URLの書き換えをしています。 ここはちゃんと動作しております。 (2)で、http://www.hoge.com/dir/index.html にアクセスした場合 /dir/index.php を呼び出すことに成功はしています。 ただ、http://www.hoge.com/dir/category.html にアクセスした場合 PHPファイルではなく、HTML(/dir/category.html)の場合404のエラーになってしまいます。 分かりづらい説明で申し訳ございませんが、ご教示よろしくお願いいたします。 [環境]  PHP:5.1.6  Linux:調べられません・・・わりと新しいバージョンです。

  • mod_rewrite設定について

    タイトル通りPHPではなく、mod_rewriteについての質問になります。 適切なカテゴリが見当たらなかったので、PHPカテゴリであれば適切な回答を頂けると考えてこちらに書かせていただきます。 一応、.htaccess内にmod_rewriteの記述をして動作させる事はできていますが、理解が浅く応用が効かないレベルです。 ちょっと、今回その応用が必要になって、ハマッてしまいました。 仮に現在、以下のようなユーザディレクトリ形式のレンタルサーバで動作しているサイトがあるとします。 ttp://example.com/hoge/ RewriteEngine On RewriteBase /hoge/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /hoge/blog/index.php [L] この例では、.htaccessを【ttp://example.com/hoge/】に置いて、その下の階層に置かれたblogディレクトリのindex.phpにリダイレクトさせるという事ですが。 今回該当サイトのサーバを移動する事になって、ユーザディレクトリ形式ではなく、サブドメイン式の以下のようなレンタルサーバへ移動する事になりました。 ttp://hoge.example2.com/ もちろん、.htaccessの内容も書き換えて、以下のようにちゃんと変更して動作させる事ができています。 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] .htaccessを基準として見れば、自分(.htaccess)よりも下のblogディレクトリにアクセスするのは変わりないので、相対記述さえできれば…と試してみたところ、動きませんでしたorz。 どの階層に置かれても100%動く!!.htaccessが置かれたディレクトリをリネームされても大丈夫!! という記述方法があればベストなんですが。 ※特殊な環境では無理だが、一般的環境では8割方動くだろうという事でも可 そんな記述方法がないにしても理解が浅いために、「たぶん無理だろう」という予感を持っているだけで「このような理由で技術的に無理です」と言えないところに問題が。 ※ワードプレスのような広く使われているシステムが、ディレクトリ移動の際には書き換えの必要があるため。方法があるなら、きっとその方法は既に導入されているはずという予感から。 よろしければ、ご教授ください。

    • 締切済み
    • PHP
  • mod_rewriteで静的化(PHP)

    ご質問です。 例えば以下のような静的なページをmod_rewriteを使って.htaccessで作成しようとしています。 RewriteRuleの記述内容がよくわからず困っています。 また、.htaccessは、どのディレクトリに配置すればよいでしょうか。 どなたかご存知でしたら教えて下さい。 http://localhost/free/index.php?action=member →http://localhost/free/member http://localhost/free/index.php?action=bbs →http://localhost/free/bbs http://localhost/free/index.php?action=usr →http://localhost/free/usr このような記述をしていますが、ご指摘お願いします。 ---------------------- DirectoryIndex index.php RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9A-Za-z)]+)$ index.php?action=$1 [L] ---------------------- 宜しくお願いします。

    • 締切済み
    • PHP
  • mod_rewriteが一部だけ効きません。

    mod_rewriteが一部だけ効きません。 CORESERVERからKAGOYAサーバーにサイトを移したのですが、 mod_rewriteが一部効きません。 運営側に尋ねても問題ないとしか回答が返ってきませんでしたので、困っています。 ----------------------------------------------------------------------------- 【.htaccessの記述】 php_flag magic_quotes_gpc off RewriteEngine On (1)RewriteRule ^exp/txt/([0-9]+)/$ exp/index.php?nov=$1&p=0 [L] (2)RewriteRule ^exp/all/$ exp/index.php?list=all [L] ----------------------------------------------------------------------------- 上手くいかないのは(1)の記述です。 「ドメイン名/exp/txt/001/」に繋いだら、 「exp」ディレクトリのindex.phpに([0-9]+)の値を$_GET['nov']に渡す。 という処理にしたいのですが、実際に繋いでみると、 下記エラーがサーバーに出力されました。 ****************************************************************************** File does not exist: /home/○○○○/public_html/ドメイン名/exp/txt/001.txt/ ****************************************************************************** CORESERVERでは正常に動作していたのに、なぜKAGOYAの方では 「~/exp/txt/001.txt/」となるのかが分かりません。 (実際に、txtディレクトリには001.txtというファイルは存在しています) しかし、(2)のmod_rewriteは正常に動作します。 「ドメイン名/exp/all/」に繋いだら、 「exp」ディレクトリのindex.phpにallという値を$_GET['list']に渡す。 どなたかお知恵を貸してください。

  • mod_rewriteについて

    mod_rewriteについてしつもんです。 http://aaa.jp/bbb.php?c=100&d=200 ↓ http://aaa.jp/bbb_100.html?d=200 とできるんでしょうか? 設定してみたのですが、以下では機能しませんでした。 RewriteRule ^/bbb([0-9]+)\.html(.*)$ /bbb.php?c=$1$2 よろしくお願いします。

  • mod_rewriteについて

    いつもお世話になっております。 mod_rewriteを使ってURLの書き換えをしたいと思っております。 下記のようなファイルがあるとします。 http://www.domain.com/aaa/list.php http://www.domain.com/aaa/detail.php http://www.domain.com/bbb/list.php http://www.domain.com/bbb/detail.php PHPファイルはHTMLに書き換えています。 ---------------------------------------- RewriteEngine on # QUERY_STRING RewriteRule /([a-z]+)\/([a-z]+)\/([0-9]+)\.html$ /$1/$2.php?$3 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*)\.html$ /$1.php [L] ---------------------------------------- http://www.domain.com/aaa/detail/2.html http://www.domain.com/bbb/detail/2.html 上記どちらにアクセスしてもページが表示されませんと なってしまいます。 どうぞ、ご教授お願いいたします。 <環境> PHP:4.3.2 Apache:2.0.40 (Red Hat Linux)

    • ベストアンサー
    • PHP

専門家に質問してみよう