Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么有些URL';网站数量不';php扩展名只显示stackoverflow.com/questions/ask这样的单词_Php_Url - Fatal编程技术网

为什么有些URL';网站数量不';php扩展名只显示stackoverflow.com/questions/ask这样的单词

为什么有些URL';网站数量不';php扩展名只显示stackoverflow.com/questions/ask这样的单词,php,url,Php,Url,大家好,我想知道为什么一些使用php(或任何其他服务器端脚本语言)的网站不显示扩展名甚至文件。 如下面的url stackoverflow.com/questions/ask 还有一些网站从用户那里获取数据,比如说一个允许用户发布一些随机帖子的网站,那么当我们点击该帖子时,它会将我们发送到: domain.com/post/what-user-post-goes-here 如果我们试图访问domain.com/post/我们会得到一个错误,即找不到页面 我问这个问题是因为我想知道使用的方法是什么

大家好,我想知道为什么一些使用php(或任何其他服务器端脚本语言)的网站不显示扩展名甚至文件。 如下面的url stackoverflow.com/questions/ask 还有一些网站从用户那里获取数据,比如说一个允许用户发布一些随机帖子的网站,那么当我们点击该帖子时,它会将我们发送到: domain.com/post/what-user-post-goes-here 如果我们试图访问domain.com/post/我们会得到一个错误,即找不到页面


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

如果你把domain.com/post/放进去,它会查找index.php或index.html。如果它找不到其中一个,就会出错。它与PHP完全没有关系:)

以防万一,堆栈溢出是在ASP.NET上构建的

您要查找的关键词是“无扩展URL”。实现取决于您使用的服务器


对于Apache和PHP,请参见以下答案:

许多站点使用一种网关脚本来路由所有请求。通常在这些情况下,会使用类似于
mod_rewrite
的内容将请求定向到该脚本


例如:
http://example.com/blog/my-first-post
http://example.com/blog/my-second-post
都可以重写为
/index.php
。然后,该索引脚本可以解析请求,以确定请求的是一篇博客文章,以及哪篇特定的文章。

这是因为他们使用Apache的
mod_rewrite

您可以使用它轻松地重新路由URL,因此,如果需要,您可以使
/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
web服务器控制哪些请求被发送到哪些程序。最简单的方法是您描述的,当domain.com/folder/file.ext被发送到文件的处理程序时。在.PHP文件中可能是PHP,在HTML文件中可能只是按原样显示文件

另一种可能是benhowdle89所描述的,这也是大多数web服务器的默认行为-如果您请求domain.com/folder/,它会检查index.html或index.php之类的内容


对于这样的站点,映射是不同的。Web服务器被配置为接受一个请求,如
/questions/4339829/为什么一些网站的URL不显示php扩展名,而只是显示类似
的单词,并将该请求发送给一个知道如何处理该请求的程序。例如,它可能类似于
/scripts/displayquestion.php?question_id=4339828
,也可能是为处理请求而编写的任何其他程序。这可能是一个PHP脚本,也可能是一个应用程序服务器,或者是用另一种语言编写的脚本。

您所说的是URL的(SEO)


有关更多详细信息,请参阅和,因为本主题在SO和Web上都有很好的文档记录。

实现此目的的方法很简单。当用户指向某个目录时,服务器将查找该目录的根目录(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(搜索引擎优化)以及在你改变网站开发内容的情况下提供保护,当人们将你的网站添加到书签时,你不会丢失SEO链接或创建死链接。

我知道这是一篇非常古老的文章,但是,这应该被选为正确答案。虽然Alex选择的答案并非完全错误,但它忽略了使用类似example.com/my-article vs example.com/my-article.php的url的要点。这种混淆有助于提高网站的安全性。