代码之家  ›  专栏  ›  技术社区  ›  mooware

如何保持url路由目录独立的网站

  •  8
  • mooware  · 技术社区  · 17 年前

    我正在开发一个使用url路由的PHP网站。我希望该网站是目录独立的,以便它可以从移动 http://site.example.com/ http://example.com/site/

    例如,假设操作的视图 index welcome 包含图像 img/banner.jpg . 如果使用url请求页面 http://site.example.com/welcome ,浏览器将按以下方式请求图像: http://site.example.com/img/banner.jpg ,这很好。但是如果使用url请求页面 http://site.example.com/welcome/index ,浏览器会认为 欢迎 是一个目录,将尝试以 http://site.example.com/welcome/img/banner.jpg ,这显然是错误的。

    我已经考虑过一些选择,但它们对我来说都不完美:

    • 使用url重写重定向来自的请求( *.css | *.js |…)或( | js/*

      问题 :每个扩展都必须在重写规则中命名。如果有人要添加一个新的文件类型(例如mp3文件),它不会被重写。


    • <img src="<?php echo url::base(); ?>img/banner.jpg" />

      问题 :看起来很乱; css -及 js -包含路径的文件必须由PHP处理。

    那么,如何保持网站目录的独立性呢?有没有比我想出的更好/更干净的方法?

    4 回复  |  直到 17 年前
        1
  •  8
  •   Tom Haigh    16 年前

    <base href="<?php echo url::base(); ?>" /> 
    

    这意味着浏览器将请求与该路径相关的任何非绝对URL。 然而,我不确定这将如何影响嵌入CSS文件中的URL等。 这不会影响CSS文件中定义的路径。(谢谢mooware)

        2
  •  2
  •   SomeGuy SomeGuy    17 年前

    这个 <base> <a> 标签也是。考虑这个例子。

    <!-- this page is http://oursite.com/index.html -->
    <html>
     <head>
        <base href="http://static.oursite.com/" />
     </head>
     <body>
        <img src="logo.gif" alt="this is http://static.oursite.com/logo.gif" />
        <a href="/login">this links to http://static.oursite.com/login which is not what we wanted.  we wanted http://oursite.com/login</a>
     </body>
    </html>
    

    如果您使用PHP函数调用来创建链接,这不会是一个问题,因为您只需确保它会输出绝对URL即可。但是如果你(或你的设计师)手工编写 < <a> 而不是 <img> .

        3
  •  1
  •   Anton Babushkin    17 年前

    tomhaigh有一个很好的观点,值得进一步研究。

    根据 MSDN 这个 base

        4
  •  1
  •   da5id    17 年前

    也许我遗漏了什么,但你不能像我(我认为其他人)那样做吗?即将所有图像、css、javascripts等放在一个公共目录中,即:

    /inc/images/
    /inc/css/
    /inc/javascript/
    etc
    

    然后使用基本相对URL引用它们,即:

    <img src="/inc/images/foo.jpg" />
    etc
    

    推荐文章