2010-12-02 66 views
1

你好家伙我想知道为什么一些使用PHP(或任何其他服务器端脚本语言)网站不显示扩展名甚至文件。 喜欢这个网址stackoverflow.com/questions/ask 还有一些网站从用户获取数据,比如说让用户发布一些随机帖子的网站,好吧,当我们点击该帖子时,它会发送给我们: domain.com/post/what-user-posted-goes-here 如果我们尝试去domain.com/post/,我们会得到一个未找到页面的错误。为什么一些网站的网站不显示.php扩展只显示像stackoverflow.com/questions/ask

我在问这个问题,因为我想知道什么是使用的方法,它与PHP有关吗?因为我想用它。

回答

0

如果你把domain.com/post/它会寻找一个index.php或index.html例如。如果找不到其中的一个,它将会出错。它没有真正与PHP有关:)

0

许多网站使用一种网关脚本的这条路线的所有请求。通常在这种情况下,使用类似mod_rewrite的命令将请求定向到该脚本。

例如:http://example.com/blog/my-first-posthttp://example.com/blog/my-second-post都可以被重写为/index.php。然后,该索引脚本可以解析请求以确定是否正在请求博客帖子,以及哪个特定帖子。

2

这是因为他们使用Apache的mod_rewrite

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

您可以轻松地重新路由的网址与它,所以如果你想你可以/test/pages/test.html例如。

RewriteEngine on 
RewriteRule test /pages/test.html 

通常,人们用regex进行动态重路由,例如:

RewriteEngine on 
RewriteRule ^page/([^/\.]+)/?$ index.php?page=$1 [L] 

所以/page/test-page将显示index.php?page=test-page

+0

我知道这是一个很旧的帖子,但是,应该选择这个作为正确的答案。尽管Alex所选择的答案并不完全错误,但它忽略了具有类似example.com/my-article与example.com/my-article.php的url的观点。这种混淆可以帮助您增加网站的安全性。 – 2014-02-20 15:55:10

0

Web服务器控件哪些请求被发送给哪个节目。最简单的方法就是您所描述的,当domain.com/folder/file.ext被发送到文件的处理程序时。对于.php文件,这可能是PHP,或者对于HTML文件,文件可能会按原样显示。

另一种可能性是benhowdle89所描述的,这也是大多数Web服务器的默认行为 - 如果您要求domain.com/folder/,它会检查index.html或index.php或类似的东西。

在SO等网站的情况下,映射是不同的。网络服务器被配置为接受如/questions/4339829/why-some-urls-of-websites-doesnt-show-the-php-extention-just-shows-words-like的请求,并将该请求发送给知道如何处理它的程序。例如,它可能类似于/scripts/displayquestion.php?question_id=4339828,或者它可以是任何其他编写来处理请求的程序。这可能是一个PHP脚本,也可能是一个应用程序服务器,或者是用另一种语言编写的脚本。

0

实现这一点的方法很简单。当用户指向一个目录时,服务器将查找该目录的根目录(index.php)。

因此,在您的示例domain.com/post/中,您将拥有一个名为post的目录(文件夹)。在该文件夹中,您将拥有index.php。服务器将返回该文件夹中的index.php文件,该URL不会显示php文件,只是URL domain.com/post/。

如果服务器要显示php文件,它看起来像这样:domain.com/post/index.php,但index.php不显示。

与其他人一样,目的是为了SEO(搜索引擎优化),以及在您改变自己开发网站的情况下的安全措施,您不会失去您的搜索引擎优化链接或当人们为您的网站添加书签时创建死链接