2010-04-27 90 views
0

我是一个新的PHP网站,只熟悉.net网站形式的网站。php网站的网址匹配问题

我无法弄清楚如何路由在这个PHP网站上工作。

www.oursite.com/suggestions.php是suggestions.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

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

谢谢。

回答

2

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

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,这当然不存在。

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 

/意味着浏览器认为 '​​3210' 的目录。如果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文件,因为它认为“​​3210”的目录。 (对于一个潜在的修复,看看Eric Petroelje的答案。)

因为DouweM说,但你最好的选择是直接看你的.htaccess文件,并找出它的作用。