
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でフォルダ選択ダイアログを...
-
LimeSurveyのアンケート画面に...
-
CakePHP2のCronでのShellを使う...
-
Subversionのリポジトリの削除
-
FTPコマンドでディレクトリごと...
-
rmdirでフォルダが消せません
-
PHPのif文でその処理を途中で抜...
-
他の開発環境をインストしたらa...
-
SmartyでHTMLソースの変更が反...
-
VBAでJPGサイズ変更
-
ファイル名は、数字の「0」(...
-
phpのセッションについて
-
CSVファイルのダウンロード
-
HPを開くとダウンロードページ...
-
PHPの設定で、 エラーが発生し...
-
バッチを用いたフォルダの自動移動
-
class定義のphpをファイル分割...
-
GD(php)での image関数 イメ...
-
ファイルのアップロード$_FILES...
-
onedrive にexcelファイルをア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【file_exists】ファイルが存在...
-
.phpと.incファイルの違いはな...
-
phpinfoの内容が見れない
-
.phpファイルが、表示されない
-
コメントフォームの設定方法
-
URLが.PHPってどういう...
-
ユーザー認証でユーザーID毎に...
-
PHPのインストールで
-
アクセスされたくないファイル...
-
cronで動かすと保存されなくなる
-
PHPを使ったリダイレクトを教え...
-
PHPをインストールしてみた...
-
PHPの戻り値をWINDOWSバッチフ...
-
PHPファイルの中身が見られるこ...
-
PHPを使ってのサーバ上ファイル...
-
コマンドプロンプト エラー
-
PHP で各種設定ファイルをイン...
-
[PHP+XML]PHPで動的に出力す...
-
Fatal error: Class 'Config' n...
-
1つのファイルにデザイン(HTML...
おすすめ情報