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/

 

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

Share this post


Link to post
Share on other sites

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

получим 500

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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>

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Все ок, НО в конце страниц .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

Share this post


Link to post
Share on other sites

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

 

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

 

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

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

 

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

 

Да, все норм.

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites
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>

 

 

Share this post


Link to post
Share on other sites

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

RewriteCond %{REQUEST_METHOD} GET

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

Share this post


Link to post
Share on other sites
Только что, abushyk сказал:

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


RewriteCond %{REQUEST_METHOD} GET

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

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

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

RewriteCond %{REQUEST_METHOD} GET

Share this post


Link to post
Share on other sites

Все запросы, которые не являются 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]

 

Share this post


Link to post
Share on other sites
В 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]

 

СПАСИБО!

 

Share this post


Link to post
Share on other sites
13 минуты назад, banzai72 сказал:

СПАСИБО!

 

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

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.