Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Изменение стандартных адресов

Страницы: 1  |  2
06.05.2008, 06:50
furamag
furamag

Зарегистрирован:
2008-04-13
Сообщений: 19

У меня такой вопрос по адресам в НетКат. Использую версию 3.1.
Есть раздел "publications" и подраздел "companynews", в котором находится некий материал (companynews_4.html). В итоге адрес материала получается такой: http://site.ru/publications/companynews/companynews_4.html . Мне же нужно привести адреса к такому виду: http://site.ru/news/companynews/4/ . Возможно ли это как-то реализовать?
07.05.2008, 07:56
furamag
furamag

Зарегистрирован:
2008-04-13
Сообщений: 19

Вообще, мне известен один способ изменения адресов разделов: внесение корректив в таблицу subdivision в поле Hidden_URL . Насколько такой метод является допустимым?
Вопрос с тем, как убрать .html для меня остаётся открытым.
07.05.2008, 10:59
DiGGy
DiGGy
DiGGy

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

furamag писал(а):
Насколько такой метод является допустимым?

Такой метод недопустим.

Чтобы решить вашу задачу надо либо корректировать движок неткета (лишаетесь гарантии и не сможете заливать обновления), либо учите мат часть по mod_rewrite и строгайте свой скрипт по обработке 404 ошибки, т.е. подменяете стандартный неткетовский обработчик.

зы. почитайте еще вот тут: http://www.netcat.ru/support/ncforum/?Subdiv_ID=5&Topic_ID=153

Temet nosce...
08.05.2008, 02:03
Гость
Гость

Спасибо за подсказку. С mod_rewrite дружу, так что думаю, что справлюсь.
Вообще происходит перенос проекта с самописного движка на Неткат, поэтому и возникла проблема смены адресов. Переадресация, которая реализована в Неткате, не подходит. Просто на сайт стоит очень много ссылок с различных ресурсов и как показал опыт переадресация даст возможность сохранить лишь часть передаваемого ссылками веса. Да и переиндексации придётся ждать. Так что мне легче написать скрипт по обработке 404 ошибки.
09.05.2008, 02:39
furamag
furamag

Зарегистрирован:
2008-04-13
Сообщений: 19

Я такой момент не понял в вашем сообщении: Вы предлагаете переписать правила в mod_rewrite или обработчик 404-ой ошибки?
Если первое, то получается я должен вместо $1 в правиле
Код:
RewriteRule ^(.+)$ /netcat/require/e404.php?REQUEST_URI=$1 [L,QSA]
подсовывать нужный адрес (тот, который был по умолчанию для НетКат).
Во-втором случае, как я понимаю, достаточно переопределить переменную $REQUEST_URI в requiree404.php и вписав в неё свой адрес (тот, который был в НетКат изначально). Какой из вариантов лучше?
Для вывода правильных адресов достаточно подправить файл require/s_list.inc.php ?

По указанной Вами ссылке есть примеры в архиве. К сожалению страница с архивом не работает. Не могли бы Вы дать пример переписанных файлов?
10.05.2008, 14:35
DiGGy
DiGGy
DiGGy

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

furamag писал(а):
Я такой момент не понял в вашем сообщении: Вы предлагаете переписать правила в mod_rewrite или обработчик 404-ой ошибки?

Если у вас доступен mod_rewrite, то лучше его. В противном случае придется править обработчик e404.php. А можно вообще не трогать исходные файлы неткета, создайте на фтп каталог "/publications/", сделайте там свой .htaccess - ну и разруливайте им все вопросы.

furamag писал(а):
Какой из вариантов лучше?

Это решать только Вам. Второй вариант предусматривает внесение правок в движок системы со всеми вытекающими...

furamag писал(а):
Для вывода правильных адресов достаточно подправить файл require/s_list.inc.php?
Не только, см. пример ниже

furamag писал(а):
Не могли бы Вы дать пример переписанных файлов?
пример

Temet nosce...
11.05.2008, 23:26
furamag
furamag

Зарегистрирован:
2008-04-13
Сообщений: 19

Что-то я не могу разобратся с таким вопросом: по логике, Неткат узнаёт адрес страницы из переменной REQUEST_URI, которая определяется в .htaccess в правиле
Код:
RewriteRule ^(.+)$ /netcat/require/e404.php?REQUEST_URI=$1 [L,QSA]

Я вставляю своё правило в .htaccess:
Код:
RewriteRule ^test/test2/([0-9]*)/?$ /netcat/require/e404.php?REQUEST_URI=publications/companynews/companynews_$1.html [L,QSA]

В e404.php переменная REQUEST_URI существует и содержит "publications/companynews/companynews_5.html", но на странице Выдаётся ошибка "Страница не найдена". Вот такой вопрос: откуда НетКат узнаёт адрес текущей страницы? Может из глобальных переменных $_SERVER, но я пробовал и их переопределить, результата никакого.
12.05.2008, 07:45
furamag
furamag

Зарегистрирован:
2008-04-13
Сообщений: 19

В общем, как я понял, адрес страницы вытаскивается из $_SERVER['REQUEST_URI'] в файле /require/s_extract.inc.php . Переопределить $_SERVER['REQUEST_URI'] в .htaccess на нужное мне значение не получается. Значение $_SERVER['REQUEST_URI'] в e404.php записывается в $_SERVER['REDIRECT_REQUEST_URI']. Если кто-то может подсказать, как записать значение именно в $_SERVER['REQUEST_URI'], то подскажите пожалуйста.
12.05.2008, 10:43
DiGGy
DiGGy
DiGGy

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

furamag писал(а):
Код:
RewriteRule ^test/test2/([0-9]*)/?$ /netcat/require/e404.php?REQUEST_URI=publications/companynews/companynews_$1.html [L,QSA]



Код:
RewriteRule ^test/test2/([0-9]*)/?$ /netcat/require/e404.php?REQUEST_URI=/publications/companynews/companynews_$1.html [L,QSA]


Temet nosce...
12.05.2008, 17:36
furamag
furamag

Зарегистрирован:
2008-04-13
Сообщений: 19

В $_SERVER['REQUEST_URI'] значение не заносится даже при наличии слэша, а оно должно быть именно в $_SERVER['REQUEST_URI'] так как в файле /require/s_extract.inc.php адрес берётся из $_SERVER['REQUEST_URI'] .
Пробовал я и такое правило:
Код:
RewriteRule ^test/test2/([0-9]*)/?$ /folder/require/e404.php?REQUEST_URI=publications/companynews/companynews_$1.html [E=REQUEST_URI:publications/companynews/companynews_$1.html,L]

, но в этом случае нужное значение попадает в $_SERVER['REDIRECT_REQUEST_URI'].
13.05.2008, 11:04
DiGGy
DiGGy
DiGGy

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

Тут два варианта:
1. mod_rewrite - мне все-таки кажется, что его можно использовать для подмены REQUEST_URI. Ща, к сожалению не готов детально разобраться в спецификации и выдать готовый результат. Может как-то через Alias, RewriteBase, RewriteCond %{ENV:REQUEST_URI} - лучше на тематических форумах по апачу поспрашивайте.
2. Просто тупо. Сделайте свой обработчик my404.php где впишите строку $_SERVER[REQUEST_URI] = $MY_URI_VAR; , а дальше вызывайте уже стандартный неткетовский обработчик.

Temet nosce...
198 196 2008-05-13 17:46:50 7424
Страницы: 1  |  2
Описание проекта