【问题标题】:php website url matching questionphp网站url匹配问题
【发布时间】:2010-04-28 03:41:27
【问题描述】:

我是 php 网站的新手,只熟悉 .net 网络表单网站。

我不知道路由是如何在这个 php 网站上工作的。

www.oursite.com/suggestions.php 是建议.php
www.oursite.com/suggestions 还加载了 php 罚款
www.oursite.com/suggestions/ 加载 php,但没有应用 css
www.oursite.com/suggestions/anything - '/' 之后的任何内容都将被忽略,并且建议在没有 css 的情况下加载。所以 oursite.com/suggestions////// 有效,oursite.com/suggestions/2/2/2/2/whatever 也是如此

我已经搜索但没有找到任何关于它是如何工作的好的解释。有人可以解释或提供一个好的资源吗?

谢谢。

【问题讨论】:

    标签: php url mod-rewrite


    【解决方案1】:

    这肯定是使用 Apache 扩展 Mod_Rewrite 完成的。您可能会在公共根目录中找到一个名为 .htaccess 的文件,其中定义了这些重写规则。

    【讨论】:

      【解决方案2】:

      就友好的网址而言,DouweM 有正确的答案。

      至于 CSS,可能是因为您在链接标签中使用了相对 URL:

      <link rel="stylesheet" href="site.css"/>
      

      将这些更改为绝对 URL,它应该可以解决该问题:

      <link rel="stylesheet" href="/site.css"/>
      

      这样做的原因是浏览器根据它认为它所在的目录发出对 CSS 的请求,即使你的 URL 重写正在改变它。因此,如果 url 是 http://mysite.com/suggestions/ 并且您使用的是相对 url,浏览器将请求 css 为 http://mysite.com/suggestions/site.css 这当然不存在。

      【讨论】:

        【解决方案3】:
        www.oursite.com/suggestions.php is to suggestions.php
        www.oursite.com/suggestions also loads the php fine
        

        您可能有一个.htaccess 文件,它首先检查该名称的文件是否存在,如果它提供了该文件,则如果不存在,则尝试将其路由到 php 脚本。

        www.oursite.com/suggestions/ loads the php, but no css is applied
        

        / 表示您的浏览器将“/suggestions/”视为一个目录。如果suggestions.php 将包含相对&lt;link&gt; 的HTML 输出到样式表,例如&lt;link href="style.css"&gt;,你的浏览器会请求www.oursite.com/suggestions/style.css,而不是前面两种情况下的www.oursite.com/style.css

        www.oursite.com/suggestions/anything
        

        与前一种情况相同,您的浏览器将请求错误的css 文件,因为它认为'/suggestions/' 是一个目录。 (有关潜在的解决方法,请查看Eric Petroelje 的答案。)

        不过,正如 DouweM 所说,最好的办法是直接查看 .htaccess 文件并弄清楚它的作用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-06-03
          • 1970-01-01
          • 1970-01-01
          • 2016-09-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多