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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- WordPress(ワードプレス) httpからhttpsへのリダイレクト設定について 2 2022/04/17 09:49
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- HTML・CSS インクルードした要素がヘッダーにかぶってしまう 3 2022/09/13 17:35
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
【file_exists】ファイルが存在...
-
他サーバーにあるファイルに書...
-
PHPの戻り値をWINDOWSバッチフ...
-
use と requireの違いは?
-
thtmlファイルとはどんなファイ...
-
あるサイトにあるcsvファイルを...
-
URLが.PHPってどういう...
-
winサーバーでphpを開こうとす...
-
php ホームページ初心者 入力確...
-
別のドメインのファイルをrequire
-
PHPからCronを編集したい
-
fputs()はfwrite()のエイリアス...
-
.phpファイルが、表示されない
-
既存PCサイトから携帯サイトを...
-
PHPのコマンドでファイルの新規...
-
サーバーにアップロードしたら...
-
[PHP] 標準の関数について
-
phpで別のファイルの変数に代入...
-
$ka = $_REQUEST[\\"FFF\\"];が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
【file_exists】ファイルが存在...
-
.phpファイルが、表示されない
-
URLが.PHPってどういう...
-
サイトのphpソースコードを表示...
-
HTMLに埋め込んだPHPがうまく出...
-
PHP+MySQL SQL文を外部ファイル...
-
use と requireの違いは?
-
さくらレンタルサーバーでPHPが...
-
PHPファイルの中身が見られるこ...
-
fputs()はfwrite()のエイリアス...
-
プロパティファイルの読み込み...
-
コマンドプロンプト エラー
-
PHPを使ってのサーバ上ファイル...
-
htmlspecialcharsが機能してい...
-
phpmailerで送れない添付ファイ...
-
別のドメインのファイルをrequire
-
[PHP+XML]PHPで動的に出力す...
-
phpinfoの内容が見れない
-
CakePHP2のCronでのShellを使う...
おすすめ情報