htaccess用于缩短网址

时间:2013-07-27 13:36:11

标签: php mysql .htaccess redirect

我正在开发一个URL缩短脚本。 我的脚本会生成http://127.0.0.1:1337/urlshortener/v5tjp等链接。

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

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

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

这是redirect.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运行我的脚本。

2 个答案:

答案 0 :(得分:0)

RewriteRule ^$ index.php [L]

你错过了'你'。

答案 1 :(得分:0)

试试这段代码:

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]