- ベストアンサー
RewriteCondとRewriteRuleについて
- ローカル環境での.htaccessファイルの設定で、RewriteCondとRewriteRuleの使い方について説明します。
- 特定の条件に一致しない場合にリダイレクトを行う.htaccessの設定で、否定条件を用いた書き方がエラーとなる原因について解説します。
- RewriteCondの条件式の正しい記述方法と、特定のパス以外を対象としたリダイレクトの設定方法を確認しましょう。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> RewriteRule ^(.*)$ /index.php/$1 [L] 紹介された例(サイトの最上位ディレクトリ)とコンテンツの配置が 違っています。 ci ディレクトリの下なので RewriteRule は下記になるはずです。 RewriteRule ^(.*)$ index.php/$1 [L]
その他の回答 (1)
- t-okura
- ベストアンサー率75% (253/335)
> RewriteRule ^(.*)$ ccc/$1 [L] が繰り返し適用され、ループしているようです。 下記でいかがでしょうか。 RewriteEngine On RewriteBase /bbb RewriteRule ^ccc/ - [PT] RewriteCond $1 !^(b\.html)$ RewriteRule ^(.*)$ ccc/$1 [L]
お礼
ご返答ありがとうございます。 そのやり方でできました。ありがとうございます。 それを応用してCodeIgniterとフレームワーク(ジャンルが違って申し訳ありません・・・) をindex.phpを省略した形で実行できないかと試していたのですができませんでした・・・ ¥┬index.html └ci┬index.php .htaccess └system┬ └application┬ └controllers─welcome.php 上のような階層でciディレクトリの中のindex.phpにアクセスすることによって welcome.phpが実行できます。 http://localhost/ci/index.php/welcome とアクセスするとちゃんとできるのですが、.htaccessに RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L] と書いてindex.phpを省略(http://localhost/ci/welcome)してアクセスすると Object not found! 要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 というエラーが出てできません。 http://userguide.cilab.info/general/urls.html のサイトに省略の仕方が載っていてそのまま試したつもりなのですが・・・ これだけの情報だけで申し訳ないのですが、ここからエラーの原因を推測できるのでしょうか?
お礼
ご返答ありがとうございます。 なるほど、場所が違うのでそのまま書くと駄目なわけですね。 お陰様でできました。ありがとうございます。