Задать вопрос

Как убрать конечный слеш в адресной строке?

Приветствую!

Имеем, скажем, такую структуру сайта на Bitrix:
/poezda/index.php
...
/kontakty.php


И, скажем, такое меню:
<a href="http://site.ru/poezda">Поезда</a>
    <a href="http://site.ru/poezda/poezd1">Поезд 1</a>
    <a href="http://site.ru/poezda/poezd2">Поезд 2</a>
<a href="http://site.ru/kontakty">Контакты</a>

<!-- В конце ссылок нет слешей -->


При переходе, ссылкам в конец адресной строки добавляется слеш, т.е. получается site.ru/kontakty/

При добавлении правила в urlwrite.php ничего не поменялось :
$arUrlRewrite = array(
  array(
    "CONDITION" => "#^/poezda#",
    "PATH" => "/poezda/index.php",
  )
);


в CONDITION пробовал указывать различные вариации, такие как #^/poezda#, #^/poezda, /poezda и пр.

Подскажите пожалуйста, как избавиться от этих слешей в конце?

P.S. Файл .htaccess стандартный, содержит эти строки для роутинга:

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>
  • Вопрос задан
  • 5970 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
workDNK
@workDNK
Разработчик интернет-магазинов на 1С-Битрикс
Предположу, что добавление слешей у вас идет на уровне сервера, а не на уровне самого сайта. А изменения в urlrewrite не влияют на добавление слешей никак, поскольку этот файл предназначен для парсинга url и подключения необходимого файла для обработки. И вопрос на всякий случай: может, какой-то модуль для битрикса установлен, который добавляет слеши?

В .htaccess где-то выше указанного блока точно не присутствуют правила редиректа страниц без слеша на страницы со слешем?

Можно еще при помощи сервиса яндекса https://webmaster.yandex.ru/tools/server-response/ проверить, какой статус отдают страницы вида site.ru/poezda/poezd2

UPD.

Проверил на одном из своих сайтов, у меня заработало как надо с такими изменениями htaccess take.ms/N3WEE:

1. В секцию mod_dir добавляем строку

DirectorySlash Off

2. В секцию mod_rewrite добавляем строки

RewriteCond %{REQUEST_URI} ^.*[^/]$
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}/index.php -f
RewriteRule ^(.*)$ /$1/index.php [L]

Индексные страницы разделов стали открываться как со слешем, так и без слеша на конце.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
вот вроде решение, учитесь мучить гугл.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы