Проблема с ревритом

Статус
В этой теме нельзя размещать новые ответы.

lEx0_kz

Постоялец
Регистрация
3 Авг 2009
Сообщения
62
Реакции
26
Так сперва мой реврит6
PHP:
<IfModule mod_rewrite.c>
	RewriteEngine On

	RewriteBase /
	#RewriteRule ^tracker/(.*) index.php?do=/blog/$1
	#RewriteRule ^tracker(.*) index.php?do=/blog/$1
	
	RewriteRule ^(.*/?)tracker/(.*) index.php?do=/$1blog/$2
	RewriteRule ^(.*/?)tracker(.*) index.php?do=/$1blog/$2
	
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule ^(.*) index.php?do=/$1

</IfModule>
Суть проблемы что при редиректе
Для просмотра ссылки Войди или Зарегистрируйся

Все работает
а при
Для просмотра ссылки Войди или Зарегистрируйся
уже нет. (ссылается из ЦМС в Для просмотра ссылки Войди или Зарегистрируйся)

И не пашут конструкции в виде Для просмотра ссылки Войди или Зарегистрируйся
(ссылается из ЦМС в Для просмотра ссылки Войди или Зарегистрируйся)

Помогите исправить

PS.
Пробовал писать
PHP:
RewriteRule ^Code5/tracker(.*) index.php?do=/Code5/blog/$1
тогда работает все и норм открывает страницу
Для просмотра ссылки Войди или Зарегистрируйся
и
Для просмотра ссылки Войди или Зарегистрируйся
 
PHP:
    RewriteRule ^(.*/?)tracker/(.*) index.php?do=/$1blog/$2
    RewriteRule ^(.*/?)tracker(.*) index.php?do=/$1blog/$2
У тебя первый (.*/?) съедает всю строку. Попробуй его ограничить. Надо выкинуть как-то оттуда /
Например, так:
PHP:
^([0-9A-Za-z._-]+)/tracker/(.*)$  index.php?do=/$1/blog/$2
Но тогда конструкции вида /../../tracker/.. сюда не попадут.
А если сделать для них правило, то оно съест и /../tracker/..
(т.к. это как раз и будет считаться 2 слова через слеш).

Короче или начинай ссылки с /tracker, чтоб они однозначно идентифицировались по ^, или заканчивай на tracker, чтоб идентифицировались по $, или, раз уж вставляешь /tracker/ в середину, делай чтоб начало или конец никогда ни при каких обстоятельствах не подпадало под это же правило. Сейчас у тебя "большие-маленькие буквы или цифры или точка или подчеркивание или минус или слеш" замечательно съедает строку /tracker/. Сделай чтоб этого не было.

Типа, в штуке до или после /tracker/ гарантировано не должно быть слешей.
 
PHP:
    RewriteRule ^(.*/?)tracker/(.*) index.php?do=/$1blog/$2
    RewriteRule ^(.*/?)tracker(.*) index.php?do=/$1blog/$2
У тебя первый (.*/?) съедает всю строку. Попробуй его ограничить. Надо выкинуть как-то оттуда /
Например, так:
PHP:
^([0-9A-Za-z._-]+)/tracker/(.*)$  index.php?do=/$1/blog/$2
Но тогда конструкции вида /../../tracker/.. сюда не попадут.
А если сделать для них правило, то оно съест и /../tracker/..
(т.к. это как раз и будет считаться 2 слова через слеш).
Короче или начинай ссылки с /tracker, чтоб они однозначно идентифицировались по ^, или заканчивай на tracker, чтоб идентифицировались по $, или, раз уж вставляешь /tracker/ в середину, делай чтоб начало или конец никогда ни при каких обстоятельствах не подпадало под это же правило. Сейчас у тебя "большие-маленькие буквы или цифры или точка или подчеркивание или минус или слеш" замечательно съедает строку /tracker/. Сделай чтоб этого не было.
Типа, в штуке до или после /tracker/ гарантировано не должно быть слешей.

Круто пашет:ay:

Добавлено через 2 минуты
есть какой нить учебник с примерами как работать с rewrite?

я придумываю сам эти правила и они иногда не пашут, а почитать что да как не с чего:nezn:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху