htaccess for shortened URL


htaccess for shortened URL

我正在编写一个URL shortener脚本。我的脚本生成一个类似http://127.0.0.1:1337/urlshortener/v5tjp的链接。

v5tjp是一个随机值,由脚本生成。

我的脚本的逻辑是,我输入一个URL,然后PHP获取它,生成一个随机值(长度也取自SQL数据库),然后在数据库中插入长URL和短URL。

我遇到的问题:我需要创建一个.htaccess文件,将访问者重定向到redirect.php,在那里我有重定向脚本。

这是重定向.php文件:

<?php
include ('connect.php');
$decode = mysql_real_escape_string($_GET['decode']);
$sql = 'SELECT * FROM urls WHERE short_code="$decode"';
$result = mysql_query($sql);
if (isset($_GET['url_token'])){
    $urlId=$_GET['url_token'];
    $query = "SELECT * FROM urls WHERE short_code=".$urlId." LIMIT 1";
    $redirect = mysql_query($query);
    if(mysql_num_rows($redirect)) {
        $row = mysql_fetch_assoc($redirect);
        $url = $row['long_url'];
        header('Location: http://'.$url);
    }
    echo 'Bad URL!';
    exit();
}

while($row = mysql_fetch_array($result))
{
$res=$row['long_url'];
header("location:".$res);
}

这是我制作的.htaccess文件:

RewriteEngine On
RewriteRle ^$ index.php [L]
RewriteCond %(REQUEST_FILENAME) !-f
RewriteRule ^(.*)$ redirect.php?url_token=$1 [L] 

但由于某种原因,它不起作用。我正在用XAMPP运行我的脚本。

RewriteRule ^$ index.php [L]

你错过了一个"u"。

试试这个代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteRle ^$ /index.php [L]
RewriteCond %(REQUEST_FILENAME) !-f
RewriteRule ^urlshortener/(.*)$ /redirect.php?url_token=$1 [L,QSA,NC]