ЧПУ. Добавление слэша в конце.

chaan

Guest
ЧПУ. Добавление слэша в конце.

Нужно ли добавлять слэш в конце URL, если он отсутствует, или нет:
1. Добавляет ли Apache слэш в конце? По моим наблюдения -- да.
2. Я представляю, как написать функцию добавления, но я думаю, что быстрее, чем преобразование(если последний символ не "/", то добавляем "/"), будет выборка по одному из двух значений: со слэшем и без. Хотя, наверно, реальная разница в скорости не велика?
3. Для поисковиков эти страницы будут разными? Если страницы разные, то без слэша не стоит обрабатывать или пожертвовать ИЦ в угоду удобопользования?
 

DiTHER

bang bang
1. со слешем - папки, без слеша - файлы.
Механизм такой:

-> пишешь без слеша
-> апач пытается найти файл
-> если находит то выводит юзеру, если нет ищет папку
-> если находит - делает юзеру редирект на эту папку но уже --> со слешем (потом снова ищет папку когда получит редирект)
-> если не находит - выдаёт 404

Если судить по ЧПУ то мне больше нравится добавление слеша в конце. Ибо юзер думает (продвинутый юзер :)) что ето папка и там лежит index.php или что то в этом роде

Поисковик думает абсолютно тоже самое

Апач нифига недумает - так как у него реврайт руль недвусмысленно это перенаправляет на файл

Если писать чпу без слеша то:
Юзеру внатуре непонятно что это такое. :) Если он об этом задумаеццо

Поисковик будет недвусмысленно думать что это файл. Потому как с точки зрения файловой системы это именно файл. Разницы нет так как это внатуре выводится как файл :) (страница)

Апачу опять насрать на все это.

Если используются ЧПУ, то полезно делать проверку самим реврайтами, дабы делать редирект ( [R] ) если слеша в конце нет, а потом уже применять все остальные правила

Это ответ на твой вопрось номер два :)
RewriteRule "(.*)([^\/]{1})$" "http://urlofsite/$1$2" [R]

После применения правила, апач не будет ничего делать (в т.ч. и запускать пхп) Быстрее не получиццо :)

Прим: правило работоспособно в apache 1.x, во второй версии нада проверять.



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

bgm

 
Обосновывай своё мнение
Обосновывать мнение относительно ерунды? Если ты пишешь подобное правило, то ты явно не читал даже руководства по mod_rewrite.

P.S.
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [R]
 

DiTHER

bang bang
Проверку на файл сделать задачей не было. Ведь у человека возможно не стоит задачей __все__ урлы так исправлять - поэтому ему нужен совсем другой RewriteCond, а проверка на файл ему будет лишней обузой.

в re особой (читай - __значимой__) разницы не наблюдаю
(.*)([^\/]{1})$ => (.+[^\/]{1})$ => (.+[^\/])$ => ^(.+[^/])$

если для тебя способ написания re __более понятным для новичка__ является поводом обосрать, то я умываю руки.

Я тоже могу сказать - презрение экранирования слеша, неявное указание квантификатора может сыграть __особенно с новичком__ злую шутку.

и при чём здесь руководство mod_rewrite, если спорим мы по re?

Посему не надо иронизировать..

p.s.
"$1/" при задании не в .htaccess а в конфиге перебросит в DocumentRoot НЕ виртуального сервера, /$1/ в рут раздела вообще, $1/ при задании в .htaccess - в рут под виндами, и только /$1/ __в htaccess__ сделает как надо.
 

bgm

 
Проверку на файл сделать задачей не было.
Что значит "не было"? Т.е. добавлять слэш к локатору файла, а не директории - это нормально?

в re особой (читай - __значимой__) разницы не наблюдаю
Продолжай не наблюдать и дальше, и считать при этом, что твой способ - это очень понятный и правильный.

и при чём здесь руководство mod_rewrite, если спорим мы по re?
При том, что если бы ты его читал, то не продолжал бы писать ерунду.

"$1/" при задании не в .htaccess а в конфиге
но коммент
 

chaan

Guest
Впрос был про то, что быстрее. А как написать, я уж сам разберусь.
 

DiTHER

bang bang
Что значит "не было"? Т.е. добавлять слэш к локатору файла, а не директории - это нормально?
он жеж млин спрашивал про слеши для ЧПУ, которые САМ делает (урлы всмысле). О запросе на файл речь не шла изначально. Подумай! Проверять ЧПУ на наличие файла с таким именем в файловой системе НЕ ГЛУПО!??

Что ж такое-то.. не удосужился хотя бы проверить то что советуешь, считаешь что нет причин чтобы не использовать .htaccess, и не смотря на это нос задрал так что самому не видно. Бардак.
 
Сверху