проблема с .htaccess и "/" в конце

раз начали про html говорить, я задам еще вопрос. все ссылки в HTML как прописывать так <a href="/page.html"> или <a href="page.html">. то есть с "/" или без "/"
Оба варианты правильные, но эффект будет разный - Для просмотра ссылки Войди или Зарегистрируйся

<a href="/page.html"> - ссылка относительно корня сайта
<a href="page.html"> - ссылка относительно текущего документа

интересно почему с "/" не редиректит на страницу без "/"?
если я набираю site.by/page.html/ а переводит на страницу site.by/page.html
Код:
RewriteEngine   On
RewriteCond %{REQUEST_URI} (.*)/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [R=301,L]
Расшифровка: если в конце пути слеш и такой директории нет на сайте редирект на эту же страницу без слеша в конце.
Правильно работать будет только в корне домена.
Браузеры кешируют успешный редирект проверяйте в Для просмотра ссылки Войди или Зарегистрируйся и ему подобных

Надо писать правило...но не будет оно так работать site.by/page.html/ такого не существует и соответственно оно будет выдавать 404
Ну как бы htaccess активнее всего используют как раз для редиректа несуществующего на реальное... или я как-то не так вас понял ;)
 
если открыть урл
site.by/page.html - то страница откроется нормально
если
site.by/page.html/ - добавляем "/" то страница 404.
Попробуйте, пожалуйста простенькое правило (и не важно апачу существует что-то, или его нет. Апач работает не с УРЛами, а со строками) :
Код:
RewriteCond %{REQUEST_URI} \.html\/
RewriteRule (.*.html)/ /$1 [R=301,L]
Пихать в любое место после включения реврайтенджина и объявления базы рерайта...
 
Ну как бы htaccess активнее всего используют как раз для редиректа несуществующего на реальное... или я как-то не так вас понял ;)
Неправильно) Я имел ввиду что не существует такого как page.html/, он же сначала хотел чтобы у него ссылки такого вида были) ну а редирект уже отдельно ведь нужно писать)
 
  • Заблокирован
  • #14
Оба варианты правильные, но эффект будет разный - Для просмотра ссылки Войди или Зарегистрируйся

<a href="/page.html"> - ссылка относительно корня сайта
<a href="page.html"> - ссылка относительно текущего документа


Код:
RewriteEngine   On
RewriteCond %{REQUEST_URI} (.*)/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [R=301,L]
Расшифровка: если в конце пути слеш и такой директории нет на сайте редирект на эту же страницу без слеша в конце.
Правильно работать будет только в корне домена.
Браузеры кешируют успешный редирект проверяйте в Для просмотра ссылки Войди или Зарегистрируйся и ему подобных


Ну как бы htaccess активнее всего используют как раз для редиректа несуществующего на реальное... или я как-то не так вас понял ;)
Не понятно просто где полезная нагрузка? Что вообще это за адрес такой site.ru/index.html/ и для чего такому адресу присваивать редирект? Если чисто из-за того что пользователь может случайно поставить слеш в конце адреса, то это бред. Ведь он во-первых: не в курсе того, что адрес таковой, во-вторых адрес это домен, только браузер открывает полный путь при вводе домена. Ну а в третьих: тогда надо прописать правила со всеми знаками которые возможны и желательно сразу еще правила по множественному указанию знаков. ))) Типа: site.ru//index.html/, site.ru/index.html//, site.ru/index.html///, site.ru//index.html//. Ведь ошибиться при вводе можно где угодно.
Ну а если серьезно, то просто пропишите ЧПУ, чтобы в строке браузера не было полных путей типа site.ru/index.html.
Опять же мое личное мнение.
 
Ну а в третьих: тогда надо прописать правила со всеми знаками которые возможны и желательно сразу еще правила по множественному указанию знаков. ))) Типа: site.ru//index.html/, site.ru/index.html//, site.ru/index.html///, site.ru//index.html//. Ведь ошибиться при вводе можно где угодно.
При оптимизации проектов всегда убиваю возможность добавить хоть 2 хоть 20 слэшей... Всё срезается под корень. Чисто на всякий случай ;)
А решается точно так же - двумя строчками...
 
Не понятно просто где полезная нагрузка? Что вообще это за адрес такой site.ru/index.html/ и для чего такому адресу присваивать редирект? Если чисто из-за того что пользователь может случайно поставить слеш в конце адреса, то это бред.
Пользователь как раз почти не вводит руками адреса, а вот куча ошибок в софте даёт слешы в конце адреса и в том числе там, где их совсем не ждешь... Мне такое в логах доступа довольно часто попадается.
И по хорошему, это надо редиректить на правильный адрес, как минимум, чтобы не было дублирования для ПС.
 
Назад
Сверху