gpt4 book ai didi

apache - 漂亮的 URL 和 SEO 友好的 URL?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:42:08 25 4
gpt4 key购买 nike

我目前使用的是 Apache 2.2

我可以做一些简单的事情

RewriteRule ^/news$ /page/news.php [L]
RewriteRule ^/news/(.*)$ /page/news.php?id=$1 [L]

但是如果我想像这样发送 2 个参数怎么办

http://www.example.com/link/param1/param1_value/param2/param2_value

最后,我还想知道实现像 stackoverflow 这样的 SEO 友好 URL

尽管我可以访问带有类似 URL 的页面

http://www.example.com/doc_no/

只需用

装饰该 URL

http://www.example.com/doc_no/this-is-the-article

通过示例片段给我一些建议。

最佳答案

我知道 PHP symfony 框架允许您这样做。

它是如何工作的:在 apache 配置中,使用 mod_rewrite 将所有传入的请求重定向到单个入口点(在 symfony 中,这称为“前端 Controller ”)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

在这个前端 Controller 中,您将创建一个“请求”对象,它包含 URL 提供的所有信息。

例如,您可以说“/”之后的第一件事是要调用的 PHP 文件的名称,其他所有内容都是参数和值,因此: http://example.com/file/id/2将使用 id=2 调用 file.php

为此,只需使用一些正则表达式并仔细设计“请求”类。对于上面的示例,“Request”类应该同时提供 getRequestedAction() 和 getParameter(string parameter) 方法。当“请求”对象被完全填充时,将使用 getRequestedAction() 方法以调用正确的文件/操作/方法。

如果您选择使用 URL 上的 reg exp 和 _GET 数组的解析来填充请求对象的参数数组,您可能会遇到以下情况: http://example.com/file/id/2http://example.com/file?id=2相同(两者都可以工作)

您可以选择忽略扩展名(http://example.com/file.html 与 http://example.com/file 相同),或者不忽略。

最后,对于某些 URL,您可以选择忽略最后一个“/”之后的所有内容。这样:http://example.com/question/3/where-is-khadafihttp://example.com/question/3/is-linux-better-than-windows相同

在不同的 file.php 中,只需使用 $request->getParameter('id') 来获取“id”参数的值,而不是使用 _GET 或 _POST 数组。

重点是

  1. 将所有传入流量重定向到单个“前端 Controller ”
  2. 在该文件中,创建一个包含运行站点所需的所有信息的“请求”对象
  3. 根据“请求”对象中包含的信息调用正确的操作(php 文件)
  4. 在操作中,使用此请求对象获取 URL 中包含的参数

希望对你有帮助

关于apache - 漂亮的 URL 和 SEO 友好的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7170026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com