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

时间:2011-11-04 10:15:36

标签: php url

我正在尝试将我的网站的网址设为SEO并且用户友好。它基本上是一个静态的公司网站,但是对于侧面菜单,我通过URL传递一些变量来显示主要选择菜单的子菜单。

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

我想在每个网址的末尾屏蔽?id=4&sid=4之类的内容。无法使用隐藏的输入元素,因为我正在修改此站点,而实际构建该站点的开发人员不使用表单。

3 个答案:

答案 0 :(得分:2)

您正在寻找使用.htaccess文件重写网址的方法。例如,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同一页面,因此在您的网站上您需要使用“tidy”版本的URL(第一个)

可以阅读更多内容,您可以根据需要自定义URL。例如,有几个地方可以阅读:

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

http://www.easymodrewrite.com/

通常一种很好的方法(这样你的URL中没有很多ID)就是在你的数据库中存储一个“URL友好”的页面名称(例如“name-of-page”) ,然后在请求页面时,只需在数据库中搜索该名称,您就会知道它与哪个ID有关。

答案 1 :(得分:1)

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

因此链接变为/ offshore / programmers,然后您查找“离岸”和“程序员”的ID并显示相应的内容。

答案 2 :(得分:0)

“掩蔽”是什么意思?是URL-rewriting,你在寻找什么?如果是,则需要将别名(例如“程序员”)附加到URL,而不是GET-params。这些将通过URL重写转换为GET-params,然后通过PHP与ID匹配。