私はこの問題を一日中解決してしまいましたが、これまでのところ何も動作していないようです。私はそれが本当に不自由な問題になる可能性があると認めますが、私はそれを現時点で正確に説明することすらできませんが、私は何か助けを求めることを楽しみにしています!フロントコントローラーリダイレクトは機能しますが、一部のルートではルートが間違っています
私は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}
をベースルートとして取り除く必要がありますが、それでもアドレスバーに表示されているか、少なくともどこに隠れているのかを理解しておく必要があります。