8

根据下面的代码,我正在使用表单和“获取”方法为用户提供返回选项,以返回他们来自我的网站的未知 URL。我更喜欢它而不是浏览器的后退按钮,它无需 javascript 即可工作。

我遇到的问题是某些浏览器(chrome,safari,可能还有其他浏览器)在它们被引用的 url 的末尾添加了一个问号。由于 seo 的原因,我不想要这个。

我的问题是:

1)我可以以某种方式阻止我的php代码中的问号吗?或者

2)请有人告诉我如何使用htaccess重定向网址,我可能有可能结束的网址:-

.html?

.htm?

.php?

/?

提前致谢。

<?php
if (isset ($_SERVER['HTTP_REFERER']) ) {
$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo '<br /><form action="' . $url . '" method="get">
<div id="submit"><input type="submit"  value="Return to previous page" /></div>
</form>';
}
?>
4

5 回答 5

6

可能会被添加,?因为您正在执行GET来自表单的请求。

为什么不做类似的事情:

<input type="button" onclick='document.location.href=<?php echo json_encode($url);?>'>;
于 2013-05-10T16:02:05.947 回答
2

使用POST方法而不是GET

于 2013-05-10T16:22:26.573 回答
0

您为此使用表格是否相关?为什么不使用超链接并将其样式设置为您想要的 CSS 样式?

您可以尝试使用按钮而不是创建将被传递的输入值。

<form action="url" method="get">
    <button type="submit">Return to previous page</button>
</form>
于 2013-05-10T16:10:34.290 回答
0

考虑使用重定向,而不是发布到随机 URL(这不是一个好主意)

一个解决方案是

<?php
if (isset ($_SERVER['HTTP_REFERER']) ) {
$url = htmlspecialchars($_SERVER['HTTP_REFERER'],ENT_QUOTES,'UTF-8');
echo '<br /><form action="redirect.php" method="get">
<input type="hidden" name="return" value="'.$url.'">
<div id="submit"><input type="submit"  value="Return to previous page" /></div>
</form>';
}
?>

然后在redirect.php

<?php
if (isset ($_GET['return'] ) {
    $url = $_GET['return'];
    header('Location: '.$url, true, 303); // or 302 for compatibility reasons
    echo '<a href="'.htmlspecialchars($url,ENT_QUOTES,'UTF-8').'">Continue</a>';
    exit;
}else{
    echo 'Error, no redirect specified';
}

你可以用 and 替换action="GET"and $_GETaction="POST"$_POST的工作原理是一样的。

或者干脆

if (isset ($_SERVER['HTTP_REFERER']) ) {
    $url = htmlspecialchars($_SERVER['HTTP_REFERER'],ENT_QUOTES,'UTF-8');
    echo '<a href="'.$url.'">Return to previous page</a>';
}

两者仍将在浏览器中创建新的历史记录条目。

于 2014-05-19T10:47:48.287 回答
-1

在 htaccess 中你应该有这样的东西:

RewriteEngine on
RewriteRule ^myPage-([a-zA-Z0-9_]*).html myPHPfile.php?var=$1

通过上面添加到您的 htaccess 中的部分,当调用类似的 URL 时myPage-whatever.html,就像调用myPHPfile.php?var=whatever

于 2013-05-10T16:07:33.577 回答