【发布时间】:2016-09-15 00:28:10
【问题描述】:
我整天都在思考这个问题,但到目前为止似乎没有任何效果。我承认这可能是一个非常蹩脚的问题,但目前我什至无法准确解释,但我会努力并期待得到一些帮助!
我有一个带有前端控制器的 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”和“name”的数组作为菜单按钮自动完成的。所以在nav.php 中,我采用了一个带有 slug 和名称的数组:
<?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} 部分,但仍然可以在地址栏中看到它,或者至少了解问题隐藏在哪里。
【问题讨论】:
标签: php .htaccess redirect model-view-controller front-controller