Регистрация
Вход через соцсети
Восстановление пароля

ЧПУ через .htaccess

Новый топик
28.01.2013, 11:59
Ответить | Цитировать
Гость
Гость

Имеются страницы вида:
Код:
/Netshop/Goods.html?action=index&srchPat[4]=2781

Надо сделать ЧПУ:
Код:
/Netshop/c-2781.html

Дабы не портить всю структуру прописал в .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} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l


Переменные GET все нормально определяются, однако контент выводится, как будто ничего не передано. Как решить бы проблему?
29.01.2013, 17:02
Ответить | Цитировать
okn.name
Константин Орленко
okn.name

Зарегистрирован:
2010-07-20
Сообщений: 208

Как-то так попробуйте:
Код:
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&amp;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
Сообщений: 869

Если так и не разберетесь - пишите, я помогу, но мне надо будет посидеть-покопаться, поэтому потребуется небольшая оплата. Так навскидку вы все правильно делаете, но это только на первый взгляд. улыбка

198 196 2013-02-19 14:08:49 12878
Описание проекта