url重写并传递变量

时间:2011-02-16 18:04:39

标签: php url-rewriting rewrite

您好我正在尝试从网址重写页面发送数据,但不幸的是,它的工作原理只是让我回到主页或错误页面。模板& urlrewrite for rmbitter 就是我想要做的。目前domain.com/rmbitter.php加载完美文件。我在域/ boothwall.html上有一个链接,该链接看起来像 domain.com/rmbitter.php?ulnk=$usr&slnk=$lnk rmbitter.tpl有$ _GET代码。我认为我的问题是重写它不允许传递变量。

使用.tpl的原因是因为页面具有所需的设计布局。如果我使用test.html页面构建一个启动的rmbitter.php文件,并使用该变量链接到rmbitter.php,它可以正常工作。

$inc = array(
            'pictures' => 'icons.php',
            'view_images' => 'templates/view_images.tpl',
            'boothw' => 'templates/boothw.tpl',
            'rmbitter' => 'templates/rmbitter.tpl'
            );

//URL rewriting rules...
$rew = array(
            '/view_images_public\/(.*)$/' => 'req=view_images&user=$1', 
            '/boothwall\.html$/' => 'req=boothw',
            '/rmbitter\.php$/' => 'req=rmbitter'
            );

url_rewrite.php

<?php
//get request
        $url = $_SERVER['REQUEST_URI'];
        if (strpos($url,'?PHPSESSID=')) $url = substr($url,0,strpos($url,'?PHPSESSID='));
        while (strpos($url,'//') !== false) $url = str_replace('//','/',$url);
        $url = substr($url,strlen(constant('dir')));
        $url_array = explode('/', $url);

//make request string
        $reqstr = '';
        foreach ($url_array as $key => $value)
                $reqstr .= '/'.$value;
        $reqstr = substr($reqstr,1);

//other stuff
    if (substr($reqstr,0,9) != 'index.php') {

        $rewrite['/pages\/(.*)\.html$/'] = 'req=pages&id=$1';
        $rewrite['/static\/(.*)\.html$/'] = 'req=static&id=$1';
        $rewrite['/(.*)\.html$/'] = 'req=$1';
?>

的.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On        
RewriteCond %{REQUEST_FILENAME}  !-d
RewriteCond %{REQUEST_FILENAME}  !-f
RewriteRule ^(.*) index.php [L]
</IfModule>

1 个答案:

答案 0 :(得分:1)

我不是100%了解你的问题是什么,但所有与GET相关的mod_rewrite疾病的一般治疗方法是查询字符串附加(QSA)。

RewriteRule ^(.*) index.php [L, QSA]

如名称所示,它将任何传入的GET数据附加到新URL并将其传递给index.php。