php - 使用 PHP GET 方法时进行 URL 重写

标签 php .htaccess url-rewriting

当我点击网站上给定条目的评论部分时,URL 如下所示:

http://www...com/.../comments/index.php?submission=Portugal%20Crushes%20North%20Korea&submissionid=62&url=nytimes.com/2010/06/22/sports/soccer/22portugalgame.html?hpw&countcomments=3&submittor=johnjohn12&submissiondate=2010-06-21%2019:00:07&dispurl=nytimes.com

我想让它看起来像这个网址:

http://www...com/.../comments/Portugal-Crushes-North-Korea-62

据我了解,这涉及向 .htaccess 文件添加规则。我有两个问题:

  1. 由于我在 PHP 中使用 GET 方法,因此丑陋的 URL 附加了一堆变量。我不希望所有这些变量都出现在干净的 URL 中。是否可以在干净的 URL 中只包含一些变量,但仍然有一个规则将其定向到包含所有变量的丑陋 URL?

  2. 一旦我编写了 .htaccess 规则,我是否可以返回并更改源代码中的链接以指向干净的 URL?如果是这样,当干净的 URL 没有我想要传递的所有变量时,如何使用 GET 方法执行此操作?

提前致谢,

约翰

最佳答案

我不确定为什么您需要 URL 中的所有数据。您应该将提交标题、日期和作者等信息存储在数据库中,然后使用 ID 来引用它。这样,您的网址就会更短、更漂亮:

http://www.example.org/article.php?id=1

http://www.example.org/article/1/

您可以通过 .htaccess 文件中的简单 RewriteRule 来完成此操作,如下所示:

RewriteEngine On
RewriteRule ^articles/([0-9]+)/    article.php?id=$1

关于php - 使用 PHP GET 方法时进行 URL 重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3091435/

相关文章:

在 .htaccess 中使用 FilesMatch 和 Headers 所需的 Apache 模块

java - 如何配置 Tomcat 在调用 HttpServletResponse.encodeURL() 时不将 session ID 编码到 URL 中

PHP URL 重写 - 没有获取查询字符串参数

PHP - 加粗 t 内的某些文本

php - 如何使用 faker 在 Laravel 中更快地播种大型数据集

php - PHP PDO如何在注册时对密码进行哈希处理,然后在登录时“取消哈希处理”

javascript - $locationProvider.html5Mode 工作不完美

apache - 本地站点重定向到实时站点

c# - 从代码 C# 更改 Web.Config 中的 URL 重写规则

php - footer.php 中的标签</html> 是针对哪个<html> 标签关闭的?