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

Работа с mod_rewrite

Новый топик
03.08.2007, 11:43
Ответить | Цитировать
MAG

Зарегистрирован:
2007-08-03
Сообщений: 4

Ситуация такова: имеется ссылка вида http://localhost/shop/?brand=brand_name&page=page_number
необходимо привести её к ЧПУ вида http://localhost/shop/brand_name/page_number/

Ввел правило RewriteRule ^([A-Za-z0-9-]+)/([0-9]+)/?$ ?n_brand=$1&page=$2

Желаемого результата это не дало: NetCat редиректит на страницу с ошибкой "Страница не найдена".

Подскажите пожалуйста, как надо изменить правило или произвести другие действия, чтобы при нажатии на ЧПУ выводилась необходимая страница и в адресной строке отображалась человеческая ссылка?

P.S. Кто не знает, ЧПУ - Человекопонятный URL. Но всякий случай, содержимое .htaccess
DirectoryIndex index.php
AddDefaultCharset windows-1251
ErrorDocument 404 /netcat/require/e404.php

Options -Indexes
Options +FollowSymLinks

<IfModule mod_php4.c>
php_flag magic_quotes_gpc on
php_flag error_reporting off
php_value arg_separator.output "&amp;"
</IfModule>

<IfModule mod_php5.c>
php_flag magic_quotes_gpc on
php_flag error_reporting off
php_value arg_separator.output "&amp;"
</IfModule>

php_flag display_errors on

<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([A-Za-z0-9-]+)_([0-9]+).html$ ?n_brand=$1&page=$2
RewriteRule ^(.+)$ /netcat/require/e404.php?REQUEST_URI=$1 [L,QSA]
RewriteRule ^mypict.gif mypict0.gif
</ifModule>
03.08.2007, 12:09
Ответить | Цитировать
MAG

Зарегистрирован:
2007-08-03
Сообщений: 4

Мда, почему нельзя редактировать сообщения, как бы не изменял текст, всё время выводится сообщение "Текст дублируется"

В предыдущем посте случайно указал старую версию .htaccess, вот текущая:

DirectoryIndex index.php
AddDefaultCharset windows-1251
ErrorDocument 404 /netcat/require/e404.php

Options -Indexes
Options +FollowSymLinks

<IfModule mod_php4.c>
php_flag magic_quotes_gpc on
php_flag error_reporting off
php_value arg_separator.output "&amp;"
</IfModule>

<IfModule mod_php5.c>
php_flag magic_quotes_gpc on
php_flag error_reporting off
php_value arg_separator.output "&amp;"
</IfModule>

php_flag display_errors on

<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([A-Za-z0-9-]+)/([0-9]+)/$ ?n_brand=$1&page=$2
RewriteRule ^(.+)$ /netcat/require/e404.php?REQUEST_URI=$1 [L,QSA]
RewriteRule ^mypict.gif mypict0.gif
</ifModule>
03.08.2007, 13:45
Ответить | Цитировать
d

Зарегистрирован:
2007-02-09
Сообщений: 93

без редактирования ядра такого сделать нельзя, к сожалению (необходимо в 2-3 местах подправить переменную, содержащую URL, потому что она модифицируется в процессе обработки).
03.08.2007, 14:14
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Я такое делал без mode_rewrite. Просто переписал движок в нужных местах. В шаблоне в полях есть такое поле "формат", так вот если там указываешь определенный тип и ставишь кол-во возможных параметров, по которым должен идти поиск - то получаю ЧПУ только немного отличный от Вашего, а-ля "http://www.domen.ru/catalog/12-23-456-new-m/" , в общем, все передаваемые параметры перечисляются через "-"

Но, в любом случае, Вам надо переписывать движок, ну или подумать - "а нафига мне такие ЧПУ?"
После установки обновлений неткета на переписаный движок - все переписки придется делать заново.

Temet nosce...
03.08.2007, 14:51
Ответить | Цитировать
MAG

Зарегистрирован:
2007-08-03
Сообщений: 4

Спасибо за ответы. Модификация движка исключена, буду переписывать шаблон для тотальной совместимости с NetCat...
22.08.2007, 11:41
Ответить | Цитировать
Гость
Гость

RewriteRule ^([^/]*)/([^/]*).html$ /shop/?brand=$1&page=$2 [L]

Будет переделывать так
Из этого: http://localhost/shop/?brand=brand_name&page=page_number
В это: http://localhost/brand_name/page_number.html

Или так
RewriteRule ^([^-]*)-([^-]*).html$ /shop/?brand=$1&page=$2 [L]

Тогда в итоге вообще будет одна страничка после имени домена
The rewritten URL: http://localhost/brand_name-page_number.html
198 196 2007-08-22 11:41:49 9057
Описание проекта