|  |   | 28.01.2013, 11:59 
                                    
                                    
                                    
                                    
                                  | 
                            
                            
                              |  | Гость Гость
 
 
 | Имеются страницы вида: 
 Код:/Netshop/Goods.html?action=index&srchPat[4]=2781 Надо сделать ЧПУ:
 
 Дабы не портить всю структуру прописал в .htaccess
 
 Код:RewriteRule ^Netshop/c-([0-9]+)\.html /Netshop/Goods.html?action=index&srchPat[4]=$1 [L] между
 
 Код:<ifModule mod_rewrite.c>RewriteEngine On
 и
 
 Код:RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-l
 
 Переменные GET все нормально определяются, однако контент выводится, как будто ничего не передано. Как решить бы проблему?
 | 
                            
                            
  |  |   | 29.01.2013, 17:02 
        
        
        
        
      | 
  |  | Константин Константин
 
 
 Зарегистрирован: 2010-07-20
 Сообщений: 210
 | Как-то так попробуйте: 
 Код:RewriteRule Netshop/c-([0-9]+).html$ /netcat/require/e404.php?REQUEST_URI=/Netshop/Goods.html?action=index&srchPat[4]=$1 [L,QSA] 
 Не факт, что именно так заработает, поэкспериментируйте.
 | 
  |  |   | 30.01.2013, 22:16 
        
        
        
        
      | 
  |  | Гость Гость
 
 
 | Не подскажите, в какую сторону еще можно экспериментировать? Если добавить правило: 
 Код:RewriteRule ^Netshop/c-([0-9]+).html$ /netcat/require/e404.php?REQUEST_URI=Netshop/Goods.html&action=index&srchPat[4]=$1.html [L,QSA] то массив переменных $_SERVER практически идентичен. Отличается двумя элементами. В исходном случае:
 
 Код:[REDIRECT_URL] => /Netshop/Goods.html
 [REQUEST_URI] => /Netshop/Goods.html?action=index&srchPat[4]=2781.html
 
 В случае с ЧПУ:
 
 Код:[REDIRECT_URL] => /Netshop/c-2781.html
 [REQUEST_URI] => /Netshop/c-2781.html
 
 Очевидно, что нужно каким-то образом изменить $_SERVER['REQUEST_URI']; вот только как?
 | 
  |  |   | 30.01.2013, 22:43 
        
        
        
        
      | 
  |  | Гость Гость
 
 
 | В самом начале файла Код:добавил:/netcat/require/e404.php 
 Код:if ($_SERVER["REDIRECT_REQUEST_URI"]) {$_SERVER["REQUEST_URI"] = $_SERVER["REDIRECT_REQUEST_URI"];
 unset($_SERVER["REDIRECT_REQUEST_URI"]);
 unset($_GET['REQUEST_URI']);
 $_GET['?action'] = 'index';
 }
 if ($_SERVER["REDIRECT_REDIRECT_URL"]) {
 $_SERVER["REDIRECT_URL"] = $_SERVER["REDIRECT_REDIRECT_URL"];
 unset($_SERVER["REDIRECT_REDIRECT_URL"]);
 }
 А в .htaccess:
 
 Код:RewriteRule ^Netshop/c-([0-9]+).html$ /netcat/require/e404.php?REQUEST_URI=Netshop/Goods.html&action=index&srchPat[4]=$1.html [E=REDIRECT_URL:/Netshop/Goods.html,E=REQUEST_URI:/Netshop/Goods.html?action=index&srchPat[4]=$1.html,L,QSA] Таким образом я получил четыре соврешенно идентичных массива (как в оригинале, так и с ЧПУ):
 
 Код:echo "<!--";print_r($_SERVER);
 print_r($_GET);
 print_r($_POST);
 print_r($_REQUEST);
 echo "-->";
 
 Не работает, блин, все равно. Ну куда еще можно копать? От чего еще может зависеть?
 | 
  |  |   | 19.02.2013, 14:08 
        
        
        
        
      | 
  |  | Руслан Густокашин Студия Вэлпис
 
 
 Зарегистрирован: 2012-02-06
 Сообщений: 962
 | Если так и не разберетесь - пишите, я помогу, но мне надо будет посидеть-покопаться, поэтому потребуется небольшая оплата. Так навскидку вы все правильно делаете, но это только на первый взгляд.   |