使用.htaccess隐藏URL参数,同时仍然可以将它们提供给$ _GET

时间:2011-01-03 21:22:36

标签: .htaccess

我的网站上有一个脚本('write-review.php'),它带有一个可选的url参数'site'。所以服务器端请求可能是:

/reviews/write-review.php

/reviews/write-review.php?site=foo

我正在使用.htaccess创建搜索引擎友好的URL并隐藏我的php扩展,以便对此脚本的请求分别重写为

/reviews/write-a-review/

/reviews/write-a-review/foo

我认为在网址中使用'foo'可能会对我的用户造成混淆,因此我正在尝试编写一个htaccess重写规则,删除'foo',同时仍然将此变量传递给我的脚本 。因此,对/ reviews / write-a-review / foo的请求将被重写为/ reviews / write-a-review /但write-review.php将被传递给'foo'。

我目前的重写规则是:

RewriteRule ^reviews/write-a-review/?$ reviews/write-review.php
RewriteRule ^reviews/write-a-review/([a-zA-Z0-9_-]+)/?$ reviews/write-review.php?site=$1

甚至可以做我上面描述的事情吗? Stack Overflow上有很多与此类似的问题,我已经阅读了至少十几个,但我还没有找到一种方法来具体做到这一点。

非常感谢任何帮助。

谢谢,

克里斯

1 个答案:

答案 0 :(得分:0)

  

甚至可以做我上面描述的事情吗?

没有。要更改用户输入的实际网址,您必须执行标头重定向,在此期间您将丢失foo

这是不可能的,除非可能使用荒谬的技术伎俩,例如将foo存储在会话变量中。我不建议走那条路。