1

私はこの問題を一日中解決してしまいましたが、これまでのところ何も動作していないようです。私はそれが本当に不自由な問題になる可能性があると認めますが、私はそれを現時点で正確に説明することすらできませんが、私は何か助けを求めることを楽しみにしています!フロントコントローラーリダイレクトは機能しますが、一部のルートではルートが間違っています

私はFront ControllerでMVCサイトを持っています。すべてのリクエストはindex.phpにリダイレクトされていて、URIに依存しています(これは私がルートで特別な配列を使用してユーザーフレンドリーにしたものです)。標準的なルート設定。基本的にはうまくいきます。 1つのニュアンスを除いて。

.htaccessファイルには、これらで構成されています:私はに行けば

<?php 

return array (
    'main'    => 'index/main', //actionMain in IndexController 
    'contact'   => 'contact/index', 
    'prise'    => 'price/index', 
    'blog/([0-9]+)'  => 'blog/post/$1', 
    'blog'    => 'blog/list', 
    etc...  
); 

RewriteEngine on 
RewriteBase /portfolio/test/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php 

これは、私はユーザーフレンドリーなURLに使用すると、対応するコントローラを呼び出すためのルートの一例です/mainページそれはすべての良いです、そして、私は/portfolioとのリンクをクリックし、それもすべて良いです。

ところで、私のナビゲーションは、メニューボタンのために 'slug'と 'name'の配列を使って自動的に行われます。だから、nav.phpに私はこのようなナメクジと名前の配列を取る:

<?php 

    $navItems = array(

     array(
      'slug'   => "main", 
      'title'   => "Main" 
      ), 

     array(
      'slug'   => "portfolio", 
      'title'   => "Portfolio" 
      ), 

     array(
      'slug'   => "prise", 
      'title'   => "Prise List" 
      ), 

     etc... 

    ); 

    ?> 

私はこの配列のためforeachを使用して、このように自動的にボタンを作る:

echo "<a href=\"$Item[slug]\">" 

をしかし、私はblog/{some_article}に行くときに問題が発生しました(例えばblog/1)、または直接blog/を私のベースパスの後のアドレスフィールドに入れてください(これはwww.example.com/porfolio/test/です)。そして、右のコントローラが呼び出され、私のデータベースからのデータさえもここにあるので、問題はリダイレクトにはないようです。この問題はHTMLリンクタグで発生し、ナビゲーションで自動的にハイパーリンクが作成されます。今では基本パスがwww.example.com/porfolio/test/blog/{some article}となっていますので、ファイルへのパスが間違っていますので、スタイルや写真は表示されません。私はどうにかしてこのblog/{some article}をベースルートとして取り除く必要がありますが、それでもアドレスバーに表示されているか、少なくともどこに隠れているのかを理解しておく必要があります。

答えて

0

この問題は、HTMLリンクタグで発生し、ナビゲーションで自動的にハイパーリンクを作成しました。今では基本パスがwww.example.com/porfolio/test/blog/{some article}となっていますので、ファイルへのパスが間違っていますので、スタイルや写真は表示されません。

これは、クライアント側の相対パス "問題"と似ています。あなたのスタイルや写真に相対URLを使用している場合、URLは/porfolio/test/blog/ではなく/porfolio/test/となります。

あなたはこれらの相対パスは 相対にあるか、ブラウザを知らせる、あなたのクライアント側のHTMLに絶対またはルート相対(スラッシュで始まる)のURLを使用するか、または headセクションで baseタグを使用するか必要

詳細については、プロのウェブマスタースタック上の私の答えを参照してください:
.htaccess rewrite url leads to missing css

関連する問題