网址重定向似乎无法正常工作

时间:2014-03-11 19:21:25

标签: php .htaccess

所以我正在开展这个需要制作推荐模块的项目。 我必须以这样的方式重写URL,页面 refer_handler.php?refhash =(base64encode(email))重写为 / refer /(base64encode(email))< /强>

我有重定向的代码: -

RewriteRule ^refer/(\d+)$ refer_handler.php?refhash=$1 [L,QSA]

这里是refer_handler.php

<?php
session_start();
include 'dbconnector.php';
include 'inc/inc.functions.php';
include 'dbpdo.php';
if((isset($_SESSION['logged'])) && ($_SESSION['logged']=1))
{
    //get the email id from the header
    $emailOfTheReferrer = $_REQUEST['refhash']; // we get the refhash from here.
    echo base64_decode($emailOfTheReferrer);
    ////////////////
    //Layers -- // 
    //Check if the refer hash exists  (Check if the parent email exists)
}
else
{
    header('Location:../index');
}
?>

问题

网址重写似乎没有效果。 当我去/ refer / somerefhash时,它说: - 找不到。 但是,如果我使用相同的refhash,然后使用URL refer_handler.php?refhash = thehashhere 然后一切似乎都运转正常。

我该如何解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:1)

问题是(\d+)只允许数字。 base64编码的字符串可能包含其他字符。

试试这个:

RewriteRule ^refer/(.+)$ refer_handler.php?refhash=$1 [L,QSA]

它会捕获一个或多个任何字符。