我是一个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
我已经搜索过,但没有找到任何关于这是如何工作的好解释。有人可以解释或提供一个好的资源吗?
谢谢。答案 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
文件并找出它的作用。