2017-08-03 11 views
3

私はPHPでルーティングすることを学んでいます。私はエラーなしでページをルーティングすることができますが、私はcssjsファイルを含めることに固執しています。チュートリアルとサンプルで使用するメディアは、laracastビデオです。私はまた、Windows上のApacheサーバーにxamppを使用しています。PHPルーティング - エラーにはCSS/jsファイルが含まれています

私は自分の練習を作りたかったし、イメージの下に私がやったファイル構造です、私の.htaccessファイルに

、私が持っている:

RewriteEngine On 
RewriteBase /season-temp 
RewriteRule ^.*$ index.php [END] 

私のビューフォルダには、すべてのビューページファイルが含まれているheaderfootercssおよびjs

GET http://localhost/css/bootstrap.min.css 
GET http://localhost/css/logo-nav.css 
GET http://localhost/js/jquery.js 
GET http://localhost/js/bootstrap.min.js 

I挿入しようとした:

header.phpの

<!DOCTYPE html> 
<html lang="en"> 

<head> 

    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <meta name="description" content=""> 
    <meta name="author" content=""> 

    <title>Logo Nav - Start Bootstrap Template</title> 

    <!-- Bootstrap Core CSS --> 
    <link href="/css/bootstrap.min.css" rel="stylesheet"> 

    <!-- Custom CSS --> 
    <link href="/css/logo-nav.css" rel="stylesheet"> 

</head> 
<body> 

<?php require('navigations.php'); ?> 

footer.php上記符号から

<!-- jQuery --> 
<script src="/js/jquery.js"></script> 

<!-- Bootstrap Core JavaScript --> 
<script src="/js/bootstrap.min.js"></script> 

</body> 

</html> 

、それがエラーを与えます<base href="/"> headセクションを開き、各src/hrefのリンクを'season-temp/<folder_name>/<file_name>'のようにします。 'season-temp/css/bootstrap.min.css'でも、まだcssファイルとjsファイルを取得できません。

どのようにそれらのファイルを含める必要がありますか?

Update - Incorrect output

まず、以下の解決策で間違った更新をお詫び申し上げます。 cssとjsは機能しましたが、リンクが壊れています。 @ Tribyの回答で.htaccessファイルベースを元に戻すと、リンクは正常に機能しますが、cssとjsは正しくありません。以下は私のnavigations.phproutes.php

navigations.phpためのページです

<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
    <ul class="nav navbar-nav"> 
     <li> 
     <a href="/season-temp/about">About</a> 
     </li> 
     <li> 
     <a href="/season-temp/services">Services</a> 
     </li> 
     <li> 
     <a href="/season-temp/contact">Contact</a> 
     </li> 
    </ul> 
</div> 

routes.phpの

<?php 

$router->get('season-temp','controllers/index.php'); 

$router->get('season-temp/about','controllers/about.php'); 

$router->get('season-temp/services','controllers/services.php'); 

$router->get('season-temp/contact','controllers/contact.php'); 

@ceejayozは、CSSのために述べたように、私はリンクを更新した場合と、 jsファイルには、次のエラーがあります。

<br /> 
<b>Fatal error</b>: Uncaught exception 'Exception' with message 
'No route defined for this URI.' 
in C:\xampp\htdocs\season-temp\core\router.php:30 
Stack trace: 
#0 C:\xampp\htdocs\season-temp\index.php(9): 
Router-&gt;direct('season-temp/js/...', 'GET') 
#1 {main} 
thrown in <b>C:\xampp\htdocs\season-temp\core\router.php</b> 
on line <b>30</b><br /> 
+0

。実際のエラーとは何ですか? URL「http://localhost/css/bootstrap.min.css」にアクセスできますか? – ceejayoz

+0

@ceejayozのように見えますが、画像を確認してください – brianforan

+0

@ceejayozそれを正しく指して申し訳ありません。 'http:// localhost/css/bootstrap.min.css'というURLをコピーして貼り付けるとします。 'error 404'でページを取得することができません – Khairul

答えて

2

すべてをインデックスにリダイレクトしています。PHP、inexistentファイルやディレクトリのみをリダイレクトしよう:

RewriteEngine On 
RewriteBase /season-temp 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ index.php [L] 

Lは、ルールが

+0

あなたの助けてくれてありがとう!最後にそれを働かせました。書き換え部分にリファレンスがありますか?それでもなお混乱したり、条件を簡単に説明できますか?) – Khairul

+1

%{REQUEST_FILENAME}は要求されたファイルまたはディレクトリをURLで、!-fはファイルが存在しない場合はルールを適用し、ディレクトリがない場合はルールを適用します。存在する。 – Triby

+0

つまり、_file_または_directory_が存在しない場合は、以下のルールを実行します。これは 'index.php'を指すことです。私は正しい? – Khairul

0

I am accessing using http://localhost/season-temp/

これが問題であると一致した場合に、以下のいずれかのルールの処理を回避することです。

あなたのファイルはすべて、このように参照されます

<script src="/js/jquery.js"></script> 

ができますが、使用する必要があります。

エラーではありません
<script src="/season-temp/js/jquery.js"></script> 
+0

私はすでにあなたが示唆したように挿入を試みましたが、それを正しくすることができませんでした。解決策は@ Tribyの答えです。 '.htaccess'ファイルのほかに、私は各リンク上の' 'foward slash ''/'を削除する必要もあります。たとえば、 '/ js/jquery.js'は' js/jquery.js'になります – Khairul

関連する問題