перезапись URL и передача переменной - PullRequest
1 голос
/ 16 февраля 2011

Привет. Я пытаюсь отправить данные со страницы перезаписи URL, но, к сожалению, это не работает, просто возвращает меня на главную страницу или страницу с ошибкой.Шаблон & urlrewrite для rmbitter - это то, что я пытаюсь сделать.В настоящее время domain.com/rmbitter.php прекрасно загружает файл.У меня есть ссылка на домен / boothwall.html, и эта ссылка выглядит так: domain.com / rmbitter.php? Ulnk = $ usr & slnk = $ lnk rmbitter.tpl имеет код $ _GET.Я считаю, что моя проблема заключается в том, что при переписывании не допускается передача переменной.

Причина использования .tpl заключается в том, что страница имеет макет дизайна, который необходим.Если я создаю запущенный файл rmbitter.php со страницей test.html и ссылкой на 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 Ответ

1 голос
/ 17 февраля 2011

Я не на 100% понимаю, в чем ваша проблема, но общее лекарство от всех связанных с GET заболеваний mod_rewrite - это Query String Appendice (QSA).

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

Как следует из названия, он добавляет все входящие данные GET к новому URL и передает их в index.php.

...