Вопрос по Мод Реврайт

12
Erick Flatcher
На сайте с 05.02.2002
Offline
216
1373

Подскажите пожалуйста:

есть URL: site.ru/index.php/razdel/

хочу URL: site.ru/razdel/

Предлагают:

1. Как я понимаю это автоматом проверяет, где надо и не надо переименовывать и уже на ходу решает. Так ли это?

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f (это проверяет есть ли такой файл и если есть не переименовывает URL? Так?)

RewriteCond %{REQUEST_FILENAME} !-d (это проверяет есть ли такая директория и если есть не переименовывает URL? Так?)

RewriteRule ^(.*)$ /index.php/$1 [L]

2. Явное указание директорий где НЕнужно переименование:

RewriteEngine on

RewriteCond $1 !^(images|system|themes|favicon\.ico|robots\.txt|index\.php)

RewriteRule ^(.*)$ /index.php/$1 [L]

Какой из этих методов вы посоветуете использовать? Первый мне мниться более предпочтительным, но боюсь как бы он не сильно сервер загрузил ;-( Запросов должно быть много (посещаемость сайта 12.000+ хостов в сутки).

Большое всем спасибо.

X
На сайте с 05.10.2005
Offline
140
#1

Мое мнение:

1) работает так: если файла или директории нет, то передать обработку index.php, на этом закончить

2) выглядит более предпочтительным, ибо проверяет по сути одну "маску", а не две. Работает быстрее.

И я не уверен, что RewriteCond будет работать, может все-таки не $1, а {REQUEST_URI} ?

Юр. услуги для ООО,ИП,СМИ,товарные знаки, Лицензии связи (хостинг,SMS), авторское право Оффшоры,merchant account,карты
nickspring
На сайте с 29.03.2006
Offline
228
#2

для реврайта нужно писать так:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php [L,QSA]

работает на ура. В index.php нужно анализировать переменную $_SERVER['REQUEST_URI']... т.е. запрашиваемый путь будет в ней..

P.S. Erick Flatcher, перегрузить не должно. кстати, неужели Вы думаете, что Apache потратит намного больше времени на проверку существования файла или каталога, чем на парсинг всех Ваших условий реврайта?

Erick Flatcher
На сайте с 05.02.2002
Offline
216
#3

больше спасибо, наверное все же остановлюсь на первом варианте...

а существуют ли какие то минсы использования мод реврайта? как я понимаю, с точки зрения SEO все должно быть нормально?

X
На сайте с 05.10.2005
Offline
140
#4

Да все должно быть без проблем.

Я бы еще рекомендовал поставить первый вариант, затем потестить stress test или вообще любым тестером.

Поставить другой вариант и потестить. Сравнить и сделать выводы о целесообразности того или иного варианта, скорости и нагрузке. :)

Erick Flatcher
На сайте с 05.02.2002
Offline
216
#5

Сказывают, мол, в первом варианте плохо то, что он обращается к файловой структуре... однако все равно начну с первого, а если будут проблемы - перейду на второй...

Всем спасибо.

nickspring
На сайте с 29.03.2006
Offline
228
#6

напишите, плиз, потом как прошел тест...

A
На сайте с 05.11.2005
Offline
111
#7

я бы советовал второй вариант,

т.к. дисковая подсистема везде является самой тормозной частью...

но xtremest дело говорит, stress test расставит все точки над Ъ.

nickspring
На сайте с 29.03.2006
Offline
228
#8

да, но в unix-системах сведения о наличии файлов и директорий кешируются... так что не факт.. ждем результатов теста...

Erick Flatcher
На сайте с 05.02.2002
Offline
216
#9

скоро сделаю... как раз на днях все свое хозяйство на рельсы нового движка переведу (именно по этому поводу урлы реврайчу) и протестирую...

Erick Flatcher
На сайте с 05.02.2002
Offline
216
#10

:-(

и то и другое тормозит... тоесть прежде чем открыть страницу сервер 2-3 секунды думает ;-(

проблема именно в этом, так как обычные урлы прекрасно работают

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий