html-静的リソースがフロントコントローラーindex.phpに誤って書き換えられている
URLの書き換えに問題があります。 次のことが起こっています:
http://www.example.com/scores
http://www.example.com/registreren
http://www.example.com/login
これらのURLはindex.php?route=scores
などにリダイレクトされます
これはすべて非常にうまく機能しています。しかし、今では images
やstylesheet
のようなサブディレクトリにテンプレートファイルがあります。これらのファイルは
template/css/style.css
images / images .png
など
これらのファイルもすべてindex.php?route
にリダイレクトされます。
先頭のスラッシュを認識しており、ファイルへのすべてのリンクは絶対パスです。
次のコードが.htaccess
ファイルで使用されています:
RewriteEngine On
RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{REQUEST_FILENAME}!-f
RewriteRule ^(。*)/?$ index.php?route = $ 1 [L、QSA]
答え :
解決策:
次のコードでRewriteBaseを追加してみてください:
RewriteBase /
サーバーの構成によっては、 %{REQUEST_FILENAME}
の先頭にスラッシュが含まれている可能性があります。これにより、相対パスではなく絶対パスが生成されます。
答え :
解決策:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f
静的リソースがHTMLソース内のルート相対(または絶対)URLで正しく参照されている場合(競合する
BASE
要素がない場合)、これらの条件はすでに除外されている必要があります静的リソースが書き換えられないようにします。特定のファイル拡張子のリクエストを除外する条件をフロントコントローラーに追加できます(書き換えが必要なURLがこれらのファイル拡張子も共有しないと仮定します)。
これは、静的リソースの不要なファイルシステムチェックを防ぐため、フロントコントローラーにも推奨される最適化です。これは、見つからない場合(フレームワークを介してルーティングされるのではなく)、デフォルトで404になります。
例:
RewriteEngine On RewriteCond%{REQUEST_URI}!\。(css | js | png | jpg | png | gif)$ [NC] {-コード-1} RewriteRule ^(。*)/?$ index.php?route = $ 1 [L、QSA]
要求されたURLが指定されたファイル拡張子のいずれかで終わっていない場合にのみ、ファイルシステムチェックが実行され、URLが
index.php
(フロントコントローラー)に書き換えられる可能性があります。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。