2011-02-16 110 views
1

嗨我想从一个URL重写页面发送数据,但不幸的是,它不工作,只是把我扔回主页面或错误页面。模板& urlrewrite为rmbitter是我想要做的事。目前domain.com/rmbitter.php加载完美文件。我有域/ boothwall.html一个链接,该链接看起来像这样domain.com/rmbitter.php?ulnk=$usr & slnk = $ LNK的rmbitter.tpl有$ _GET代码。我相信我的问题是重写它不允许变量被传递。url重写和传递变量

之所以使用.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> 
+0

这些URL重写规则实际应用在哪里?你在用什么? – 2011-02-16 18:08:34

回答

1

我不100%理解你的问题是什么,但一般治愈所有获取相关的mod_rewrite疾病是查询字符串追加(QSA)。

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

顾名思义,它会将所有传入的GET数据附加到新URL并将其传递给index.php。