如何重写URL以缩短URL并且不在地址栏中显示任何GET变量

时间:2014-09-06 13:11:48

标签: php .htaccess url rewrite

我在单个index.php页面上有一个链接结构,例如index.php?lang = eng& theme = dark& page = shop。我确实需要从链接中获取GET变量,以便为每个访问过的页面提供适当的内容和配置。但是我只想显示页面的名称,例如default.php或我,如果可能的话,我想显示shop.php,如果page = shop和chat.php,如果page = chat。任何人都可以向我推荐我应该使用的技术吗?

1 个答案:

答案 0 :(得分:0)

如果你想这样做,你应该使用POST而不是GET,因为它不会在URL栏中显示它的变量。

在PHP中,您可以使用$_POST['var']而不是$_GET['var']找到POST变量的值,但如果它们不会显示在URL中,您将如何使用它们首先打开它们?< / p>

答案是使用一个看似普通链接的表单,其中的元素作为PHP POST内容的变量。这是一个例子:

...
<form name="openPage2" method="post" action="path/to/page2.php">
   <input type="hidden" name="lang" value="en" />
   <input type="submit" value="Page 2"/>
</form>
...

现在,这样做真的很简单。假设包含此表单的当前页面为mywebsite.com/index.php。有一个标记为第2页的按钮,表单中的其他所有内容都被隐藏。当您点击第2页时,浏览器将转到mywebsite.com/path/to/page2.php,网址栏中没有任何可见变量。但是,当您单击第2页时,我们将隐藏的输入放入将作为POST提交的表单中。意思,在第2页上,您可以执行此操作以获取语言:

...
<?php
    $lang = $_POST['lang'];
    setLang($lang);
?>
...

和$ lang现在为"en",因为这是表单值。您可以根据需要添加任意数量的隐藏输入,并且它们都不会显示在URL栏中,因为它们是POST,而不是GET。

希望有所帮助!