Php 重写URL以隐藏查询字符串

Php 重写URL以隐藏查询字符串,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我试图屏蔽页面的查询字符串,以隐藏其唯一的页面ID。这一点很重要,因为每个ID对用户来说都是唯一的 当前URL结构如下所示: (其中1234为任意数字) 但我需要它看起来像这样: 我已尝试将以下内容添加到.htaccess文件中,但似乎没有任何区别: RewriteEngine on RewriteBase / RewriteRule ^page.php?Page_ID=([0-9]+)/$ page.php [L,QSA,NC] 我看过其他的帖子,比如和其他的,但似乎找不到解决办法。这里

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

当前URL结构如下所示:


(其中1234为任意数字)

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

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

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

我看过其他的帖子,比如和其他的,但似乎找不到解决办法。这里可能缺少什么吗?

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

RewriteEngine on


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

mod rewrite不会传递查询字符串,因为该条件需要使用。但是,您不应该使用mod rewrite来“屏蔽”查询参数。如果这是你真正想要做的,首先不要把它们包含在链接中。你应该使用POST方法而不是GET方法。对于任何不公开的信息,建议使用此方法。感谢@AD7six,这已经由以前的编码人员完成,所以现在我的工作是“屏蔽”它。我一直在寻找一种避免去PHP小镇的方法,但看起来我可能不得不去。谢谢@starkeen,这是我最近的一次。它确实改变了我想要的URL,但是我有一个错误。