Задать вопрос
direwolf
@direwolf
Начинающий веб-разработчик

Как сделать так, чтобы сервер принимал адресы со слеэшем в конце и без слэша?

Имеется сайт. Некоторые страницы имеют слеш в конце адреса, а некоторые нет. Задача в том, чтобы настроить сервер так, чтобы грузил страницы и со слэшем и без слэша в конце адреса. Проблема в том, что когда убираешь слэш или добавляешь слэш, то автоматически выкидывает на 404 страницу. Помогите пожалуйста.
  • Вопрос задан
  • 470 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
дополните htaccess следующими правилами, для сео лучше определиться чтобы слеши были либо их не было:
# Убираем несколько слешей в урле
RewriteCond %{THE_REQUEST} \s/+(.*?)/{2,}([^\s]*)
RewriteRule ^ %1/%2 [R=302,L,NE]
# Убираем последний слеш в урле
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} (/+)$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Вы не указали никаких подробностей о сервере, и я могу только догадываться, но похоже, что это проблема не сервера, а вашего роутинга. Можно сделать как-то так $url = rtrim($url,"/");
Ответ написан
@ShamblerR
RewriteEngine On
RewriteBase /
Options +FollowSymLinks
############################################################################
#### Убираем повторяющиеся слеши (/) в URL                              ####
############################################################################
RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
            #Проверяем, повторяется ли слеш (//) более двух раз.
RewriteRule . %1/%2 [R=301,L]
            #Исключаем все лишние слеши.

############################################################################
####  убирает /  в конце строки если это файл ( содержит точку в урл)   ####
############################################################################
RewriteCond %{REQUEST_URI} \..+$
            #содержит точку (файл)
RewriteCond %{REQUEST_FILENAME} !-d
            #не директория
RewriteCond %{REQUEST_FILENAME} -f
             #является файлом
RewriteCond %{REQUEST_URI} ^(.+)/$
             #в конце урла есть слеш
RewriteRule ^(.+)/$ /$1 [R=301,L]
             #исключить слеш

############################################################################
####  Добавляет  /   если его нет, и это не файл!!!                     ####
############################################################################
RewriteCond %{REQUEST_URI} !(.*)/$
            #слеша в конце нет
RewriteCond %{REQUEST_FILENAME} !-f
            #является файлом
RewriteCond %{REQUEST_URI} !\..+$
            #в урле нет точки (файл)
RewriteRule ^(.*)$ $1/ [L,R=301,QSA]
            #добавляем слеш в конце
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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