我正在使用if(isset($ _ GET ['p']))...来检查是否?p =在我的网址中设置了某个内容,如果不是$ foo =“bar”;如果设置了?p = ?p =某事 - > $ foo =“某事”。有我吗?
如果我现在手动输入?p = bar到我的网址我的网址中的字符串实际上是默认字符串。因为如果我的网址中没有??$ foo =“bar”;
我想知道是否就是这样我可以完全摆脱我的网址中的?p =部分? 如果默认字符串设置为我的$ foo变量我只想拥有一个没有任何分心的干净网址?p = bar在我的网址中。
抱歉奇怪的foo和bar的东西,我没有更好的例子;) 关于亚光
答案 0 :(得分:2)
这是你要求的吗? (如果输入了默认值,请进行重定向)
if (isset($_GET['p'])) {
if ($_GET['p'] == $defaultP) {
header("HTTP/1.1 302 Found");
header("Location: ".$urlWithoutQuery);
exit(); // or whatever the function is.
} else {
$foo = $_GET['p'];
}
} else {
$foo = $defaultP;
}
请注意,必须先将此操作发送到客户端(因为它是标题的一部分)。
据我所知,在客户端上从URL中擦除内容的唯一方法是重定向或javascript(实际上,它也会重新加载,因此重定向可能要快得多)。
答案 1 :(得分:1)
看看这个mod_rewrite教程: tutorial
答案 2 :(得分:1)
使用Apache的mod_rewrite将example.com/?p=pagename更改为example.com/pagename
将它放在.htaccess文件中:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
</IfModule>
Voila,不是吗?p =
答案 3 :(得分:0)
如果您想要实现友好/干净的网址,您可能需要查看Net_URL_Mapper。
答案 4 :(得分:0)
if ($_GET['p'] == 'bar') {
parse_str($_SERVER['QUERY_STRING'], $q);
unset($q['p']);
header('Location: ' . $_SERVER['PHP_SELF'] . ($q ? "?" . http_build_query($q) : ''));
}
是一种巧妙的方式。如果它们存在,它不会擦除其他GET参数。
答案 5 :(得分:0)
如果是这样的话,我可以完全摆脱我的网址中的?p =部分?
是。摆脱它。没有人,只有你在你的网站上设置这些网址。因此,请编辑您网站的HTML并删除您想要的任何内容。