php网站网址匹配问题

时间:2010-04-27 19:34:13

标签: php url mod-rewrite

我是一个php站点的新手,只熟悉.net web表单站点。

我无法弄清楚这个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

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

谢谢。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

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

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

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

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

答案 2 :(得分:0)

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将包含相对<link>的HTML输出到样式表,例如<link href="style.css">,您的浏览器会像前两种情况一样请求www.oursite.com/suggestions/style.css,而不是www.oursite.com/style.css

www.oursite.com/suggestions/anything

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

正如DouweM所说,你最好的办法是直接查看你的.htaccess文件并找出它的作用。