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>

 

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


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

Рабочая конструкция. 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 не затрется?

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


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.