【问题标题】:Make clean URLS and retrieve query string制作干净的 URLS 并检索查询字符串
【发布时间】:2011-12-06 01:56:14
【问题描述】:

在设置我的网站时,有没有办法在 php 代码中插入相对 URL,例如 /forums/(forumID)/ 到标签中?然后,当我试图获取当前页面是哪个 forumID 时,通过$_GET 请求获取它而不使用 Smarty、CakePHP 等模板系统或 Apache 重写模块?或者这是一个巨大的头痛?我只是希望能够不绑定到一种 Web 服务器类型(Apache)。

【问题讨论】:

  • 所以你担心绑定到网络服务器,但不担心绑定到使用的编程语言?这不是很奇怪吗? ;-)
  • 我不知道 Smarty 会如何考虑这一点,但您需要设置 Apache、Nginx 或类似的工具来处理 URL
  • @zerkms 好吧,我说这是 b/c 我现在主要构建可以与我构建的几乎任何网站一起使用的类。因此,如果有人希望我建立一个网站,但他们已经有了一定的设置等,但只想向其中添加一个网站,但他们不使用 apache,那么我仍然可以。
  • @adlawson 好吧,我知道 smarty、cakephp 等模板系统具有内置于系统中的那种功能。
  • 简单的事实是,PHP 直到 web 服务器将请求路由到它时才知道请求。要拥有这样的 URL,您需要 Apache Mod_Rewrite 或等效的来读取请求并将其路由到前端控制器 (index.php)。即使是流行的分布式 CMS 系统(Wordpress、Magento、Drupal 等)也需要这种设置。

标签: php apache seo sitemap


【解决方案1】:

干净的网址很容易做到,但如果网页差异很大,可能会导致一些问题。

您需要编辑 .htaccess 文件并添加与此类似的内容

RewriteEngine On

RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1
#This will process http://example.com/forum as http://example.com/index.php?page=forum

RewriteRule ^([a-zA-Z0-9]+)/$ index.php?page=$1
#This includes the trailing slash

RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ index.php?page=$1&id=$2
#This will process http://example.com/forum/512 as http://example.com/index.php?page=forum&id=512

这是获取更多信息的好来源http://www.desiquintans.com/cleanurls

【讨论】:

  • 他不希望它与服务器设置绑定,所以这是不行的。
【解决方案2】:

...从 OP cmets 继续。

这些框架以各自的语言再次读取请求,以允许框架路由到特定的控制器,但它们仍然需要首先设置网络服务器才能将请求发送到框架。

  • 客户端请求http://example.com/forums/123
  • DNS 查询后,请求到达 127.0.0.1:80 的服务器
  • Web 服务器(例如 Apache)监听 80 端口并接受请求
  • Apache 将请求路由到服务器端脚本

这是网络服务器所看到的旅程。它需要在请求到达服务器端脚本语言(PHP/Python/Ruby 等)之前读取请求。

一旦网络服务器访问了前端控制器,服务器端语言就可以根据需要重新读取 URL。

【讨论】:

  • 感谢大家的意见。就像我说的,我绝对是服务器设置等方面的新手,以及如何传输数据。我只是想用 PHP 做一些普通的课程,我可以在大学期间用它们来建立网站以获得额外的钱。谢谢大家帮我解决这个问题!! :)
【解决方案3】:

从架构的角度来看,拥有干净 url 的主要原因:

  • 它们不依赖于任何编程语言。如果您有 .php 或任何其他扩展,如果您切换到 ASP,则必须将您的服务器设置为接受其他语言的 .php 扩展.net。
  • 它们很容易以任何语言或服务器设置进行路由。我所知道的所有现代服务器都有路由 url 的模块。

请注意,要使用编程语言来路由 url,您仍然需要设置服务器以将所有内容定向到引导文件。老实说,无论如何,您都无法绕过某种服务器配置。

结论:如果不进行一些服务器设置,您希望以这种方式设置项目的逻辑将无法正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-26
    • 2010-11-14
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    相关资源
    最近更新 更多