在PHP中传递页面时屏蔽URL的$_GET变量


Masking $_GET variables of the URL when passing pages in PHP

我正在努力使我的网站SEO和用户友好的url。它基本上是一个静态的企业网站,但对于侧菜单,我通过URL传递一些变量来显示主选择菜单的子菜单。

例如:离岸人员配置是主菜单项之一,它的子菜单项之一是程序员。当有人点击程序员时,我会通过URL传递主菜单和子菜单的id,以折叠所有其他菜单并促进打开的菜单。

我想在每个URL的末尾屏蔽?id=4&sid=4之类的东西。不能使用隐藏输入元素,因为我正在修改这个网站,而实际构建这个网站的开发人员没有使用表单。

您正在寻找使用。htaccess文件重写URL的。例如,stackoverflow可能会使用这样的代码:

RewriteEngine on
RewriteRule ^questions/([0-9]+)/([_'-'&''','+A-Za-z0-9-]+)?$ questions.php?q=$1

这会使stackoverflow.com/questsions/1234/a-title-of-a-page和stackoverflow.com/questions.php?q=1234成为同一页面,所以在你的网站上,你需要使用"整洁"版本的URL(第一个)

可以读到更多,你可以自定义你的URL到你需要的。例如,可以在以下几个地方阅读它:

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

http://www.easymodrewrite.com/

一般来说,这样做的一个好方法(这样你就不会在你的URL中有很多ID)是存储一个"URL友好"的页面名称。"name-of-page"),然后当请求页面时,只需在数据库中搜索该名称,您就会知道它与什么ID相关。

在编写链接时将ID转换为它们所代表的单词,并在访问它们时使用mod_rewrite将它们传递回PHP,在PHP中根据单词进行查找,并再次查找ID。

因此链接变成/offshore/programmers,然后查找"offshore"answers"programmers"的ID并显示相应的内容。

你说的"屏蔽"是什么意思?url重写,你在搜索什么?如果是,则需要附加别名(例如:"程序员")到URL,而不是get参数。这些将通过url重写转换为get参数,然后通过PHP匹配到ID。