

さくらインターネットのレンタルサーバを使用しています。
ドメインのwwwの有り無しを統一したかったので、.htaccessに以下のように設定しました。
<.htaccess>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ h ttp://www.domain.com/$1 [R=301,L]
検証してみると、
domain.com/item/123.html
domain.com/item/456.html
↓
www.domain.com/item/123.html
www.domain.com/item/456.html
上記のようにリダイレクトされるのを期待していたのですが、
以下のような動作をします。
domain.com/item/123.html
domain.com/item/456.html
↓
www.domain.com/item.php?id=123
www.domain.com/item.php?id=456
itemフォルダ内の.htaccessでリライトの設定をしているので、それが動いているのだと思うのですが、
リライトの設定をしているだけであって、リダイレクトの設定はしていません。
<itemフォルダ内の.htaccess>
RewriteRule ^([0-9]+)\.html$ /item.php?id=$1 [L]
リライトの設定しかしていないのに、なぜリダイレクトされてしまうのでしょうか?
仕様なのでしょうか?
No.2ベストアンサー
- 回答日時:
>[R]を付けていないのにリダイレクトされてしまいます。
あ、そういうことですか。
よくわからないけど、もしかしたら、
1)domain.com/item/123.html → domain.com/item.php?id=123 にリライトされる
.htaccess は下位ディレクトリから参照されるそうなので、まずこれが走る。このときにwww無しをwww付きに変更する記述はないので、内部的にdomain.com/item.php?id=123 にリライトされる。
2)domain.com/item.php?id=123 → www.domain.com/item.php?id=123 にリダイレクトされる
内部的なアクセスがwww付きに「リダイレクト」される。
ということなのではないですかね。
ドキュメントルートの.htaccess に
RewriteRule ^/item/([0-9]+)\.html$ /item.php?id=$1 [L]
を追加してみるとどうなりますかね。
RewriteLogLevelも上げておくと手がかり見つかるかもしれませんね。
解決しました。
ありがとうございます。
> .htaccess は下位ディレクトリから参照されるそうなので、まずこれが走る。
ご指摘の通りです。
.htaccess の実行される順番を勘違いしていました。
> RewriteRule ^/item/([0-9]+)\.html$ /item.php?id=$1 [L]
RewriteRule ^item/([0-9]+)\.html$ /item.php?id=$1 [L]
先頭の/は不要でしたが、思った通りの動作をしてくれました。
助かりました。
ありがとうございます。
No.1
- 回答日時:
ドキュメントルートの.htaccessにより、domain.com/item/123.html は www.domain.com/item/123.html へ。
そのごitemフォルダ内の.htaccessにより www.domain.com/item/123.html は www.domain.com/item.php?id=123 へ。
設定されている通りだと思いますが?
> そのごitemフォルダ内の.htaccessにより www.domain.com/item/123.html は www.domain.com/item.php?id=123 へ。
itemフォルダ内の.htaccess には[R]を付けていません。
リダイレクトを望んでいません。
[R]を付けていないのにリダイレクトされてしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
階層が違う場合の絶対パス相対...
-
PHPファイルのシンボリックリン...
-
centos6のlogにscript not foun...
-
PHPのif文でその処理を途中で抜...
-
ボタンのクリック数を合計保存...
-
Subversionのリポジトリの削除
-
SendMailがエラーを返さない
-
.phpファイルが、表示されない
-
PHPでメールを受信するには?
-
PHPSpreadsheetによる書き出し...
-
FTPコマンドでディレクトリごと...
-
SQLiteに画像を格納したい
-
別ファイルの変数を呼び出した...
-
リンク先を隠す方法はないでし...
-
ビットマップ画像を読み込むプ...
-
inputタグでphpを呼び出す際、...
-
CFileDialogの最初のディレクト...
-
php,mysqlにて画像パス保存/表...
-
ラッパークラスって何ですか?
-
TCPDFについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
nl2bの代用関数を何か知ってい...
-
htmlでphp(WordPress)を動かす
-
EZwebからphpのページを見るこ...
-
path文字列の操作
-
includeでHTMLファイルを呼出し...
-
階層が違う場合の絶対パス相対...
-
電通のタブーとは
-
botを作っているのですが、oaut...
-
「旭日中綬賞 」とはどんな賞で...
-
centos6のlogにscript not foun...
-
携帯で携帯サイトを閲覧すると...
-
PHP file_get_contents 503 ser...
-
htmlの書き換え
-
SSI される .inc ファイル内に ...
-
COOKIEの保存がうまくいかない
-
phpとhtmlについて分からない部...
-
xhtmlサイトでPHPタグをhtml拡...
-
PHPでheader情報がうまく表示で...
-
xrea+ と 開発環境 とで .htacc...
-
ページに読み込みたい
おすすめ情報