• 締切済み

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']に渡す。 どなたかお知恵を貸してください。

みんなの回答

noname#130824
noname#130824
回答No.2

MultiViewsが動作している可能性が高い。 無効にするには.htaccessに Options -MultiViews を追記。

参考URL:
http://webings.net/htaccess/multiviews/
  • asciiz
  • ベストアンサー率70% (6803/9674)
回答No.1

それらの行って、 (2) (1) の順に書かれてませんか? [L] は、「この行がLast」 という意味なので、それ以後 RewriteRule が書かれていても無視してしまう気がします。 両方の行から、 [L] を削ってみてはどうでしょうか。

katoki
質問者

お礼

回答ありがとうございます。 (1)と(2)は記述している順番で記述しています。 [L]にはそういう意味があったのですか…知らなかったです。 削除してみましたが変化なしでした。

関連するQ&A