OXYGEN

Редирект со страницы без слеша в конце адреса на со слешем

Recommended Posts

Всем привет. Добавил в .htaccess такое правило:

 

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

 

 

Должно по идее делать редирект со страниц site.ru/kvartira на site.ru/kvartira/

 

Но не работает.Подскажите как правильно прописать? Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если точку убрать из регулярки?

получим 500

вообще, правило работает, слэш добавляется, но нарушается роутинг шкуры

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не работает никак. По идее это должно по умолчанию быть в системе. Полезная защита от дубля страниц. Нет больше никаких идей?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Решение в следующем моем посте

 

UPD! Невозможно зайти в админку. Все еще в поиске решения. 

 

Нашел решение. Может кому понадобится. Советую сделать копию перед любыми изменениями.

 

Собрал вот такую конструкцию:

 

Options -IndexesAddDefaultCharset UTF-8<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} !(.*)/$RewriteRule ^(.*[^/])$ $1/ [L,R=301]RewriteRule . index.php [L]ErrorDocument 404 /404.html</IfModule>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это полный листинг? у меня для админки 404

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рабочая конструкция. XTRO теперь вход в админку работает :)

Options -IndexesAddDefaultCharset UTF-8<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [NC,L]RewriteRule ^(.*[^\/])$ /$1\/ [R=301,L]RewriteRule . index.php [L]ErrorDocument 404 /404.html</IfModule> 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все ок, НО в конце страниц .html получается вот так .html/ тоже со слешем

Тогда лучше уберите в настройках SEO - использование .html

И лучше включить такое (apps.seo.data_alias_enable)

http://wiki.sitebill.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%22SEO-%D0%9E%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%22

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все это проделал. Но тут вот какая штука.

 

1) В конце каждой ссылки (объектов) тоже добавляется "/" по редиректу.

2) Объекты недвижимости со схожими признаками - ссылки без "/"

3) В файле sitemap тоже соответственно получается без "/"

Вопрос: а как сделать тогда так что бы в конце ссылок объектов перенапрявляло на без "/" ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

просто установите htacsess из дистрибутива. Потом дополните его по вкусу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне нужно что бы на ссылках объявлений было без слеша, т.к. если оставить слеш в "Объекты недвижимости со схожими признаками" ссылки будут иметь вид http://site.ru/zelenodolsk-shustova-27Если тут сделать перенаправление, при переходе в " Объекты недвижимости со схожими признаками" будет ставиться редирект с "/"

А в страницах категорий оставить со слеш.

 

Не могу понять как это сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребята. Кто поможет? Хочу решить проблему убрав слеш на всем сайте.

Вот так убирается:

 

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]
 
Все бы хорошо, но для страницы /admin/ тоже пропадает и админка не доступна! Как установить для папки слеш?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Решил проблему таким образом:

Создал в папке /admin/ файл .htaccess с содержимым:

 

Options -Indexes
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
</IfModule>
 
Заработало. По безопасности нет ли проблем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Решил проблему таким образом:

Создал в папке /admin/ файл .htaccess с содержимым:

 

Options -Indexes
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
</IfModule>
 
Заработало. По безопасности нет ли проблем?

 

Да, все норм.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

подскажите а как убрать слеши вконце?
к примеру мы не на собственном хостинге а на аренде.
и как быть ? что именно и как мы можем сделать?

предполагаем что сейчас существует 2 страницы, а это видимо для поисковиков оень плохо
например 

http://sait.ru/prodam/1-komnatnuyu-kvartiru/realty10023/

http://sait.ru/prodam/1-komnatnuyu-kvartiru/realty10023

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
17 минут назад, abushyk сказал:

три сообщения выше уже есть вариант

вопрос в другом, можно ли это сделать на сайте на аренде?

и то что написано не однозначно понятно
к примеру 
1) писать 2 варианта в месте в одном файле
2) писать только 1 из двух предложенных вариантов и какой именно
3) какой вариант именно правильный?

1 вариант

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]

 


2 вариант

 

Options -Indexes
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
</IfModule>

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

единственное условия, что я бы может добавил бы в этот набор, это

RewriteCond %{REQUEST_METHOD} GET

что бы отключить редирект на не-GET запросах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, abushyk сказал:

единственное условия, что я бы может добавил бы в этот набор, это


RewriteCond %{REQUEST_METHOD} GET

что бы отключить редирект на не-GET запросах.

а что значит отключить на не get запросах?
если правильно понимаем get запрос это когда идет выборка улиц+цена+город например?
получается если объявление само открываем то там нет get запроса? там четкая статичная страница?

и куда вообще этот код писать?  и куда?

RewriteCond %{REQUEST_METHOD} GET

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все запросы, которые не являются POST, PUT, DELETE или иными, являются GET. В вашем случае все запросы, которые не отправляют форму - это гет. Даже форма поиска гет. редиректить пост нет смысла, так как боты их обычно не создают, данный тип запросов предназначен для изменения или добавления данных и индексировать их не рационально. т.е. их не только нет смысла завешивать редиректом, но, в целом, стоит прятать от индексаторов.

а учсловие прописать дополнительно ко всем

RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 29.11.2016 в 21:13, abushyk сказал:

Все запросы, которые не являются POST, PUT, DELETE или иными, являются GET. В вашем случае все запросы, которые не отправляют форму - это гет. Даже форма поиска гет. редиректить пост нет смысла, так как боты их обычно не создают, данный тип запросов предназначен для изменения или добавления данных и индексировать их не рационально. т.е. их не только нет смысла завешивать редиректом, но, в целом, стоит прятать от индексаторов.

а учсловие прописать дополнительно ко всем


RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]

 

СПАСИБО!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 минуты назад, banzai72 сказал:

СПАСИБО!

 

ОГРОМНОЕ СПАСИБО

ВСЁ ПОЛУЧИЛОСЬ

Только вопрос: при следующих обновлениях 

Options -Indexes
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
</IfModule>
 
в папке admin не затрется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас