8

以下のコードのように、フォームと「get」メソッドを使用して、サイト内から来た不明な URL に戻るオプションをユーザーに提供しています。私はブラウザの戻るボタンよりもこれを好み、javascript なしで動作します。

私が抱えている問題は、一部のブラウザー (chrome、safari、他にもある可能性があります) が、参照先の URL の末尾に疑問符を追加していることです。私はseoの理由でこれを望んでいません。

私の質問は次のいずれかです。

1) どうにかして、php コード内の疑問符を防ぐことはできますか? また

2) htaccess を使用して URL をリダイレクトする方法を教えてください。

.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

ランダムな 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をandに置き換えるaction="GET"と、同じように機能します。$_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 に答える