
CakePHPではURLを一度index.phpにリダイレクトするような作りになっていますが、Googleの検索エンジン用のsitemap.xmlファイルを公開ディレクトリに置いた場合、そのファイルだけはmod_rewriteのルールから外して、普通にブラウザで見れる状態にしたいです。
.htaccessをどのように設定すれば良いか、教えてください。
なお、CakePHPのindex.phpファイルと.htaccess、sitemap.xmlは同じディレクトリに置いてあります。
[環境]CakePHP 1.3 PHP5.3
現在は.htaccessは以下のように設定されています。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
上記の
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
の前の行に
RewriteCond %{REQUEST_FILENAME} ^sitemap.xml
を入れるとこのファイル自体はブラウザから見れるようになりますが、サイトのトップページ以外を見ようとすると、「Not Found」が返ってきてしまいます。
No.1ベストアンサー
- 回答日時:
どこも直す必要はありません。
もとの.htaccessに戻してください。RewriteCond %{REQUEST_FILENAME} !-f
.htaccess のこの行で、同一ディレクトリー内に存在するファイルとブラウザなどからのリクエストパスがマッチすれば、次行のRewriteRuleは適用されず、そのファイルにapacheが直接アクセスします。ディレクトリーについても !-dの行があるので、存在しているjs や css ディレクトリー内のファイルも同様にcakePHPは経由せず、直接実在ファイルにapacheがアクセスします。
実在ファイル名パスをブラウザurl欄にいれて、もし、cakePHPのcontrollerが無いなどというエラーが出るようなら、ファイル名かディレクトリー名に間違いがあります。
あとは、apacheが読み込み出来るようにパーミッションを設定してください。通常604とします。
ちなみに、以下の設定は、 sitemap.xml というリクエストの時だけ、次行のRewriteRuleを適用するという意味になる。
RewriteCond %{REQUEST_FILENAME} ^sitemap.xml
実際には、!-fの行で既にsitemap.xmlは、はじかれて何も適用されずに表示しており、それ以外のcakePHP用のパス記述はここで全部弾かれる
mpro-gramさん
ご回答ありがとうございます。
RewriteCond %{REQUEST_FILENAME}
の意味が理解できました。
「ファイルやディレクトリが実在しない場合は、CakePHPのRewriteRuleを適応」
「ファイルやディレクトリが実在する場合はそのまま表示」
ということだったんですね。
「もともとCakePHPのinidex.php以外は塞がれている」と勘違いしていました。
よくよく考えてみると、そのような記述はないですよね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サーバ無しでphpを動作させる
-
.phpと.incファイルの違いはな...
-
PHPの戻り値をWINDOWSバッチフ...
-
【file_exists】ファイルが存在...
-
Wordpressの質問です(テーマエ...
-
URLが.PHPってどういう...
-
htdocsフォルダ以外ではPHP...
-
別のドメインのファイルをrequire
-
PHPファイルの中身が見られるこ...
-
phpで外部ファイルを取り込み変...
-
.htaccess でPHPを動かすサ...
-
.phpファイルが、表示されない
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
「クラス関数」「メンバ関数」...
-
BASP21のFTPで日本語ファイル名...
-
glob関数で日本語文字が取得で...
-
PHPで、エラーがない場合のみ画...
-
FTPClientで転送結果(OKかFAIL)
-
PHPの設定で、 エラーが発生し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
【file_exists】ファイルが存在...
-
.phpファイルが、表示されない
-
session_start()でwarningが表...
-
サーバー間のファイルの移動(コ...
-
URLが.PHPってどういう...
-
apacheで拡張子を省略してアク...
-
PHPを使ってのサーバ上ファイル...
-
file(), file_get_contents(), ...
-
「temp.ppd」という添付ファイル
-
コマンドプロンプト エラー
-
fputs()はfwrite()のエイリアス...
-
use と requireの違いは?
-
PHPでフォルダ選択ダイアログを...
-
バイナリーデータをGIFで表示さ...
-
Xamppでindex.phpだけしか表示...
-
PHPファイルの中身が見られるこ...
-
sqlite_open、SQLite3::open
-
HTMLに埋め込んだPHPがうまく出...
-
phpでgifアニメかどうかチェッ...
おすすめ情報