0

非常に基本的な URL 短縮 Web サイトを構築しようとしています。このチュートリアルでbasixnickのコーディングのほとんどすべてを使用しました(https://www.youtube.com/watch?v=ZnthmFQKlVYすべての3つの部分)が、問題が発生しています。

www.google.com などの URL を短縮受信ボックスに入力すると、対応する短縮コードが取得されます。次に、たとえば www.mysite.com/xyz123 などの URL をコピーして貼り付けると、単に www.google.com ではなく、www.mysite.com/www.google.com にリダイレクトされます。

.htaccess は次のようになります。RewriteRule に問題はありますか?

<Files .htaccess>
order allow,deny
</Files>

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^(\w+)$ ./load.php?code=$1

質問への編集:

これが私のload.phpファイルです:

<?php
$code = $_GET['code'];

require("./connect.php");

$query = mysql_query("SELECT * FROM items WHERE code='$code'");
$numrows = mysql_num_rows($query);

if ($numrows == 1) {
    $row = mysql_fetch_assoc($query);
    $url = $row['url'];

    header("Location: $url");
}
else
    echo "No shortened url was found.";

mysql_close();

?>

「header(...)」コードを削除して、「echo "$url";」に置き換えると、長い URL は問題なくエコーされます。したがって、その時点までのすべてが正常に機能します。多分それは「header(...)」行です。どう思いますか?

4

1 に答える 1

1

に何か問題がload.phpあります。書き換え規則に問題はありません。リダイレクト コードが/www.google.comではなく にリダイレクトしているようですwww.google.com


編集:

$url変数が文字通りである場合、www.google.comこれが問題です。ブラウザは が相対 URI であると想定しwww.google.com、それをリクエストの作成に使用した URL パスに追加しますhttp://www.mysite.com/www.google.com

短縮する URL にプロトコル (http://または などhttps://) が含まれるようにするか、プロトコルをどちらかにする必要があります。

header("Location: http://$url");
于 2013-03-05T22:24:10.243 に答える