我一直在圍繞這個問題繞了整整一天,似乎沒有任何工作到目前爲止。我承認這可能是一個非常蹩腳的問題,但我現在甚至無法解釋它,但我會盡力期待得到一些幫助!前端控制器重定向工作正常,但某些路由的路由錯誤
我有一個前端控制器的MVC網站。所有的請求都被重定向到index.php
,並且依賴於URI(我使用一個帶有路由的特殊數組進行用戶友好操作),我的前端控制器調用正確的控制器。標準路由。基本上它工作正常。除了一個細微差別。
我.htaccess
文件包含以下幾個:
RewriteEngine on
RewriteBase /portfolio/test/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php
這是我使用的用戶友好的URL,並調用相應的控制器路由的例子:
<?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...
);
如果我去了/main
頁面都很好,然後我點擊鏈接/portfolio
,這也很好。
順便說一句,我的導航是自動使用'slug'和'名稱'菜單按鈕的數組。因此,在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}
部分,但仍然可以在地址欄中看到它,或者至少了解隱藏問題的位置。