Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с мод_реврайтом, Найденные примеры не работают 
:(
    Опции темы
Wolf1994
Дата 12.11.2005, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Пожалуйста помогите написать mod_rewrite с:
rusoft/rus/games/arcade
на:
rusoft.php?directory=rus/games/arcade

Пробовал использовать два примера с этого форума, но ни один не работает:
1.
Код

RewriteEngine On
RewriteRule rusoft/([A-Za-z0-9]+)$ /rusoft.php?directory=$1 [L]


2.
Код

RewriteEngine On
RewriteRule rusoft/(.*)/$ /rusoft.php?directory=$1 [L]


Что я сделал не так?
PM MAIL WWW   Вверх
Mal Hack
Дата 12.11.2005, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 15
Всего: 261



Код

RewriteEngine On
RewriteRule rusoft/(.*)$ /rusoft.php?directory=$1 [L]

PM ICQ   Вверх
Wolf1994
Дата 12.11.2005, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Именно так я и пробовал. Попробовал на всякий случай ещё раз, не получилось. Может у меня Апач старый? Но у провайдера, равно как и у меня, работает например такое правило:

Код

RewriteRule ^ruprogram([0-999]+)\.html /rusoftpage.php?id=$1


на основе чего я попробовал сделать:

Код

RewriteRule ^rusoft/(a-z)\/(a-z)\/(a-z) /rusoft.php?directory=$1/$2/$3


но и это не помогло smile

PS. Апач перед каждым тестом перезапускал.
PM MAIL WWW   Вверх
Mal Hack
Дата 12.11.2005, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 15
Всего: 261



А в чем выражается "не работает"
Вот так глянь:
Код

RewriteRule ^rusoft/(.*)$ /rusoft.php?directory=$1 [L]

PM ICQ   Вверх
Wolf1994
Дата 12.11.2005, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Так я тоже пробовал, попробовал ещё раз - результат - 0.

То есть так всё работает:
http://www.wolf-ware.ru/rusoft.php?directo...rnet/developing

А так - нет:
http://www.wolf-ware.ru/rusoft/rus/internet/developing

Другие реврайты (я привёл один) работают нормально.

О моём Апаче: Apache License Version 2.0, January 2004
И ещё одна странность с моим Апачем - пример, который работает на моём сайте, не сработал на чужом сайте (так мне сказали).
PM MAIL WWW   Вверх
Mal Hack
Дата 12.11.2005, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 15
Всего: 261



Wolf1994
поступаем так:
Код

RewriteRule rusoft/(.*) /rusoft.php?directory=$1 [L]


PM ICQ   Вверх
Wolf1994
Дата 13.11.2005, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Не переписывает smile smile smile
Файл rusoft.php находит, но параметр не подходит. Может там, в конце URL, автоматом ставится слэш - /, а ведь для параметра он не подходит. Как его можно опустить?

rus/internet/developing/ > rus/internet/developing
PM MAIL WWW   Вверх
Mal Hack
Дата 13.11.2005, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 15
Всего: 261



Попробуй * заменить на +
PM ICQ   Вверх
Wolf1994
Дата 13.11.2005, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Не помогло.

Выводится файл rusoft.php, причём с неподключённым CSS файлом - то есть как бы из другого директория (где таблицы стилей нет). Переменная $directory=="".

Может как-то по-другому надо описывать слэш? Всё-таки он используется как управляющий символ...
PM MAIL WWW   Вверх
Mal Hack
Дата 13.11.2005, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 15
Всего: 261



Цитата(Wolf1994 @ 13.11.2005, 22:50)
Может как-то по-другому надо описывать слэш? Всё-таки он используется как управляющий символ...

Нет.
Не секрет, что за хостинг, т.к. что-то тут не так...
PM ICQ   Вверх
Wolf1994
Дата 14.11.2005, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Пока тестирую в офф-лайн, на Денвере. Причём PHP5 там подключён как внешний CGI-модуль, что привело к немного некорректной обработке .htaccess - ошибки и регистер_глобалс надо указывать непосредственно в PHP-конфиге. Но реврайт работает без проблем:

Код

RewriteEngine On

RewriteRule ^preview([0-9999]+)\.html /preview.php?id=$1
RewriteRule ^links.html /rulinks.php?c=12&view=all
RewriteRule ^resumeru.shtml /resru.php
RewriteRule ^english.shtml /english.php
RewriteRule ^index.shtml /index.php
RewriteRule ^ruprogram([0-999]+)\.html /rusoftpage.php?id=$1
RewriteRule ^enprogram([0-999]+)\.html /ensoftpage.php?id=$1
RewriteRule ^rulinks_c-([0-999]+)\_p-([0-999]+)\.html /rulinks.php?c=$1&p=$2
RewriteRule ^enlinks_c-([0-999]+)\_p-([0-999]+)\.html /enlinks.php?c=$1&p=$2
RewriteRule ^article_sect-([0-999]+)\_num-([0-999]+)\.html /textproc.php?dir=$1&show=$2
RewriteRule ^article_sect-([0-999]+)\.html /textproc.php?dir=$1
RewriteRule ^forum/topic([0-999]+)\.html /forum/showtopic.php?topic=$1
RewriteRule ^forum/sub([0-999]+)\_page([0-999]+)\.html /forum/sub.php?subcat=$1&page=$2


- Все эти команды выполняются правильно. Непонимаю почему не работает вариант со слэшами smile

PS. А что, дело в хостинге? Данный пример протестирован?
PM MAIL WWW   Вверх
Mal Hack
Дата 14.11.2005, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 15
Всего: 261



ПРобуем так:
RewriteRule ^rusoft/([A-Za-z/0-9]+) /rusoft.php?directory=$1


ЗЫ: 0-999 зачем? Тут может быть только 0-9.
И еще, я бы в конце каждого правила [L] поставил.
PM ICQ   Вверх
Wolf1994
Дата 14.11.2005, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Цитата(Mal @ 14.11.2005, 01:09)
ЗЫ: 0-999 зачем? Тут может быть только 0-9.


Брал готовый пример, на основе которого и делал все остальные варианты.

Цитата(Mal @ 14.11.2005, 01:09)
И еще, я бы в конце каждого правила [L] поставил.


А что это даёт?

Чтобы быть точным, обозначу в чём проблема:

RewriteRule ^rusoft([0-9999]+)\.html /rusoft.php?directory=$1
переписывает rusoft1.html на rusoft.php?directory=1

но:
RewriteRule ^rusoft/([0-9999]+)\.html /rusoft.php?directory=$1
НЕ переписывает rusoft/1.html на rusoft.php?directory=1

То есть всё дело в слэше.
PM MAIL WWW   Вверх
Wolf1994
Дата 14.11.2005, 04:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Всё. Справился smile

Написал:
RewriteRule ^rusoft([A-Za-z/0-9]+) /rusoft.php?directory=$1
В результате при запросе:
rusoftrus/internet/developing
- получил:
rusoft.php?directory=rus/internet/developing
С одним "но". Страница сайта грузилась с неподключённым CSS-файлом.

Выход:
RewriteRule ^rusoft_([A-Za-z_0-9]+) /rusoft.php?directory=$1
То есть запрашивать:
rusoft_rus_internet_developing, а потом перписывать в принятом параметре rus_internet_developing на rus/internet/developing

P.S. Подумал и сделал проще:
RewriteRule ^rusoft_([A-Za-z/0-9]+) /rusoft.php?directory=$1
А для CSS-файла прописал:
<base href="http://www.wolf-ware.ru/">

P.P.S. Как могло получится, что при переписывании URL, браузер считает рабочим - директорий из непереписанного URL?!.

Это сообщение отредактировал(а) Wolf1994 - 14.11.2005, 04:03
PM MAIL WWW   Вверх
Naruvi
Дата 16.11.2005, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 9.6.2005
Где: Москва

Репутация: нет
Всего: 1



PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема »


 




[ Время генерации скрипта: 0.0594 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.