0

簡単な短縮URLを作りました。外部URLにリダイレクトする関数で使用できるように、http://chrismepham.com/q4IT612これに似たURLを.htaccessに書き換えさせようとしています。http://chrismepham.com/index.php?code=q4IT612

私が使用している .htaccess コードは次のとおりです。

SetEnv TZ Europe/London
RewriteEngine on
RewriteRule ^([a-zA-Z0-9]+)$ index.php?code=$1

私のインデックスページの上部には、次のものがあります。

if(isset($_GET['code']) && !empty($_GET['code'])){
        $code = $_GET['code'];
        redirect($code);
        die();
    }

リダイレクト機能は次のとおりです。

function redirect($code){
//test the connection
    try{
        //connect to the database
        $dbh = new PDO("host;dbname=dbname","user", "pass");

    //if there is an error catch it here
    } catch( PDOException $e ) {
        //display the error
        echo $e->getMessage();
    }

    if(code_exists($code)){
        $stmt = $dbh->prepare("SELECT url FROM url_shortener WHERE code=?");
        $stmt->bindParam(1, $code);
        $stmt->execute();

        while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

                $url = $row['url'];
        }
        header('Location: ' .$url);
    }
}

URLを書き換えないのはなぜですか?

ありがとう

4

2 に答える 2

0

RewriteRule では、index.php の前にスラッシュが必要です。

RewriteRule ^([a-zA-Z0-9]+)$ /index.php?code=$1
于 2016-12-12T03:28:43.180 に答える
0

あなたのルールは次のようにする必要があると思います:

RewriteRule ^/?([a-zA-Z0-9]+)$ index.php?code=$1

これにより、先頭のスラッシュはオプションになります。異なるバージョンの Apache では、異なる方法で処理されます

于 2012-10-10T22:40:39.070 に答える