【问题标题】:Rewrite URL to hide query string重写 URL 以隐藏查询字符串
【发布时间】:2016-06-05 11:14:48
【问题描述】:

我正在尝试屏蔽我的页面的查询字符串,以隐藏它的唯一页面 ID。这很重要,因为每个 ID 对用户来说都是唯一的。

目前的 URL 结构如下所示:

http://domain.com/page.php?Page_ID=1234
(其中 1234 是任意数字)

但我需要它看起来像这样:

http://domain.com/page.php

我尝试将以下内容添加到 .htaccess 文件中,但似乎没有任何区别:

RewriteEngine on
RewriteBase /
RewriteRule ^page.php?Page_ID=([0-9]+)/$ page.php [L,QSA,NC]

我查看了 this one 等其他帖子,但似乎找不到解决方案。有什么我可能在这里遗漏的吗?

【问题讨论】:

  • mod rewrite 不通过查询字符串,因为条件需要使用QUERY_STRING。但是,您不应该使用 mod rewrite 来“屏蔽”查询参数。如果这确实是您想要做的,请首先不要将它们包含在链接中。
  • 您应该使用 POST 方法而不是 GET。对于任何不得公开的信息,建议使用此方法。
  • 感谢@AD7six 这已经由以前的编码人员完成了,所以现在我的工作是“掩盖”它。我一直在寻找避免去 PHP 镇的方法,但看起来我可能不得不这样做。

标签: php .htaccess mod-rewrite


【解决方案1】:

查询字符串不是重写规则匹配的一部分,您需要使用 rewriteCond 匹配 %{THE_REQUEST}

RewriteEngine on


RewriteCond %{THE_REQUEST} /page\.php\?page_ID=.+ [NC]
RewriteRule ^ %{REQUEST_URI}? [L,R]

【讨论】:

  • 谢谢@starkeen,这是我得到的最接近的。它确实将 URL 更改为我想要的,但是我有一个错误。
猜你喜欢
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 2011-08-02
  • 2012-01-18
  • 1970-01-01
相关资源
最近更新 更多