【问题标题】:How can I use page.com/browse/ instead of page.com/browse.php如何使用 page.com/browse/ 而不是 page.com/browse.php
【发布时间】:2016-09-07 11:50:08
【问题描述】:

我想知道如何使用这种“文件浏览”。 现在我所有的 PHP-Web 小项目都是通过直接访问 PHP 文件来工作的:

我的程序:http://website.de/profil.phphttp://website.de/news.php

但我注意到 Wordpress 和其他网站只有文件夹(没有索引文件)。 例如:

https://wordpress.org/themes/

https://wordpress.org/themes/index.php http://localhost/wordpress/2016/05/11/hello-world/ 打开一个没有“2016”文件夹的事件

但另一方面:

https://wordpress.org/support/index.php = https://wordpress.org/support/

这背后的技术是什么? php?我如何在我的网站中使用它;这对我来说似乎很重要。

我确信在某个地方有一个很好的指南,但我什至不知道该用谷歌搜索什么。

【问题讨论】:

  • 因为如果您打开一个只有一个文件夹的 url,它会自动尝试在该文件夹中查找并加载 index.php 或 index.html。
  • ^^ 我刚刚创建了一个测试 wordpress 页面。假设我点击某个地方,网址会转到localhost/wordpress/2016/05/11/hello-world,而 2016 不是现有文件夹。

标签: php wordpress directory web-deployment


【解决方案1】:

虽然您可以通过放置例如小规模的“漂亮”网址来模仿。 index.php 放在一个文件夹中,当您使用 Web 服务器重写来有效地将一个好的 URL “翻译”成服务器可以读取的内容时,真正的宝石就出现了。

在 Apache 服务器上,mod_rewrite 是其背后的模块。 mod_rewrite 规则进入.htaccess 文件,并允许您创建非常强大的自定义 URL 结构。

如果您在测试 Wordpress 安装中查看 .htaccess 文件,您会看到将站点上的 每个 请求指向 index.php 的重写规则。

然后,Apache 在内部将看起来像是位于多个文件夹中的帖子 URL 转换为类似 http://localhost/wordpress/index.php?year=2016&month=05&date=11&post_name=hello-world 的内容。访问者只会看到“漂亮”的 URL:http://localhost/wordpress/2016/05/11/hello-world/

从这里开始,Wordpress 然后在内部处理 URL 以显示正确的帖子、日期存档、类别存档等,基于它可以在那些查询字符串变量中访问的内容(在 PHP 中,这些都在 $_GET 超全局变量中可用,例如$_GET["year"]

值得注意的是,Wordpress并没有将所有重写逻辑直接放入 .htaccess,为简单起见,它在内部管理大部分内容,这就是为什么它将 .htaccess 配置为仅“发送一切都通过了。”

其他要阅读的主题包括 mod_rewrite.htaccess :)

【讨论】:

  • 感谢这对我未来的项目有很大帮助:)
  • 很高兴它帮助了 Freddy!
猜你喜欢
  • 2013-02-22
  • 1970-01-01
  • 2021-05-24
  • 2020-04-30
  • 2012-05-07
  • 2013-10-05
  • 2018-03-07
  • 2019-08-04
  • 2015-03-31
相关资源
最近更新 更多