![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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ファイルが、表示されない
-
CakePHP2のCronでのShellを使う...
-
【file_exists】ファイルが存在...
-
サイトのphpソースコードを表示...
-
プログラムで影響するファイル...
-
phpで複数のファイルをdlさせる...
-
.phpと.incファイルの違いはな...
-
コマンドプロンプト エラー
-
includeができない
-
.datファイルの保護
-
apacheで拡張子を省略してアク...
-
onedrive にexcelファイルをア...
-
MySQLのベースに書かれたプログ...
-
フォントの色を変えるには?
-
トランザクションが原因?DBに...
-
PHPのif文でその処理を途中で抜...
-
透過PNGが透過されない!!
-
違法アップロードについて
-
BASP21メール送信(SMTP-AUTH認...
-
データベースにアクセスして結...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
【file_exists】ファイルが存在...
-
URLが.PHPってどういう...
-
.phpファイルが、表示されない
-
サイトのphpソースコードを表示...
-
PHP+MySQL SQL文を外部ファイル...
-
別のドメインのファイルをrequire
-
PHPでフォルダ選択ダイアログを...
-
session_start()でwarningが表...
-
htmlspecialcharsが機能してい...
-
use と requireの違いは?
-
apache+phpにおいてリクエスト...
-
PHPファイルの中身が見られるこ...
-
apacheで拡張子を省略してアク...
-
Fatal error: Class 'Config' n...
-
PHPを使ってのサーバ上ファイル...
-
phpinfoの内容が見れない
-
fputs()はfwrite()のエイリアス...
-
シェルコマンドでphpを実行した...
-
phpmailerで送れない添付ファイ...
おすすめ情報