隐藏URL中的GET参数


Hide GET parameter from URL

如何隐藏URL GET参数(http://domain.com/MyFirstYii/page?view=about)。我搜索了很多帖子。他们都在说重写和URL管理器,但我无法实现我想要的。(

我的场景是,

我只是想隐藏URL GET参数。

,

http://domain.com/MyFirstYii/page***?view=about***

我想隐藏***?view=about***

那么URL应该是这样的http://domain.com/MyFirstYii/page。其他类似http://domain.com/MyFirstYii/post的页面。简单地说,我的GET参数应该像POST参数一样。

提前感谢。

编辑:

我想在URLManager中创建一些规则,但是什么样的规则会隐藏GET参数

'w在regexp中表示" word "字符和url部分如" my- pretty -page "将不匹配。要隐藏GET参数,必须改进urlManager规则。您可以为使用SEF url的页面编写这样的规则:

'<controller:'w+>/<id:'d+>/<title:[^'/]*>/*' => '<controller>/view'

在这种情况下当你输入url

http://example.com/page/12/my-prety-title

一个Page控制器将被调用以id和title作为参数来执行视图操作。如果你输入这个url,也是一样的:

http://example.com/page/view?id=12&title=my-prety-title

最后一部分/* in规则允许保留额外的参数。例如,如果你的地址是

http://example.com/user/55/john-doe-junior/foo/bar/

UserControlleractionView中你可以写

echo '<pre>' ;
print_r($_GET);
echo '</pre>' ;
die();

你会看到

Array
(
    [id] => 55
    [title] => john-doe-junior
    [foo] => bar
)

从main.php中取消注释

<>之前"urlManager"=>阵列("urlFormat"=>"路径","showScriptName"=> false,"规则"=>阵列("MyFirstYii/post/& lt; view>=>"MyFirstYii/后",' & lt;控制器:' w +>/& lt; id: ' d +> ' =>> & lt;控制器/视图,' & lt;控制器:' w +>/& lt;行动:' w +>/& lt; id: ' d +> ' => '> & lt; controller>& lt;行动,' & lt;控制器:' w +祝辞/& lt;行动:' w +> ' => ' & lt; controller>& lt; action>",),),之前

将。htaccess文件放到项目根目录下,并编写如下代码

<>之前RewriteEngine上#如果存在目录或文件,直接使用rewritecsecond %{REQUEST_FILENAME}rewritecsecond %{REQUEST_FILENAME}#否则转发到index.phpRewriteRule。index . php

将此url规则添加到url规则的顶部:

'page/<view:'w>' => 'user/page'

我假设下一个:

  • 控制器名称:UserController
  • 动作名称:actionPage

如果我的假设是错误的,请提供正确的控制器名称和动作名称,以便我可以修复答案。

更新:修正了基于注释

的控制器名称

更新2:

如果你想让它对控制器中的所有动作都起作用,使用:

'<action:'w>/<view:'w>' => 'user/<action>'

如果您打算使用GET并且需要这些参数,则无法隐藏它,因为这是GET的工作方式。如果你真的需要隐藏参数,你必须切换到POST,因为参数将在请求有效负载中传递,而不是在url中。

使用post方法代替get....这是最好、最有效的解决方案。

要跟进您的查询,请查看此网站:

[http://pure-essence.net/2007/06/29/simple-php-path-rewrite/]