前控制器重定向工作,但路线是错误的一些路线



我一整天都在思考这个问题,但到目前为止似乎什么都没有奏效。我承认这是一个非常蹩脚的问题,但我现在甚至不能准确地解释它,但我会尝试并期待得到一些帮助!

我有一个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中,我取了一个数组,其中有slgs和名称,像这样:

<?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}部分的根,但仍然看到它在地址栏或至少了解问题隐藏在哪里。

这个问题出现在HTML链接标签和导航中自动生成的超链接中。现在他们看到的基本路径是www.example.com/porfolio/test/blog/{some article},所以文件的路径现在是错误的,所以我看不到我的样式和图片。

这听起来像是客户端相对路径"问题"。如果你的样式和图片使用相对url, url现在是相对于/porfolio/test/blog/,而不是/porfolio/test/

您需要在您的客户端HTML中使用绝对url或根相对url(以斜杠开始),或者在head部分中使用base标记,通知浏览器这些相对路径是相对的内容。

请参阅我在专业网站管理员堆栈上的回答:
.htaccess重写url导致缺少css

相关内容

  • 没有找到相关文章

最新更新