Web Мастерская Блог
Сообщество Web Мастеров. Тут собрано всё, чтобы написать свой первый сайт, запустить его в Интернет и поддерживать его в течении всей его работы.
Nginx: Добавление слеша в конце URL, если его там нет
Ранее страницы моего сайта открывались, как с слэшем в конце URL, так и без него. Чтобы не допустить дублей страниц, я решил, что мой сайт будет работать только с слэшем в конце URL. Проверку слэша и его добавления делал на PHP:
Слэш добавляется ко всем URL, кроме тех, что имеют на конце:
Всё работает отлично, но грешно делать это на PHP, если есть Nginx... Поискав в интернете решение моей задачи, нашёл такую строку кода:
Данный код добавляет слэш в конец всем URL, кроме тех, где есть точка (
Вставил строку в
...
// Добавление слеша в конце URL, если его там нет
if (substr($url, -1) != '/')
{
if (!preg_match('/(.*)\.(jpg|jpeg|gif|png|js|css|ico)/i', $url))
{
$url = $url . '/';
}
} // End: Добавление слеша в конце URL, если его там нет
Слэш добавляется ко всем URL, кроме тех, что имеют на конце:
jpg|jpeg|gif|png|js|css|ico
.Всё работает отлично, но грешно делать это на PHP, если есть Nginx... Поискав в интернете решение моей задачи, нашёл такую строку кода:
rewrite ^([^.\?]*[^/])$ $1/ permanent;
Данный код добавляет слэш в конец всем URL, кроме тех, где есть точка (
.
) или параметры (id=1
). А значит картинки, к которым будут обращаться на прямую, остаются без слэша.Вставил строку в
location
:
location / {
rewrite ^([^.\?]*[^/])$ $1/
- Жалоба
- Apache 6
- CMS 3
- CSS 12
- FTP 1
- HTML 10
- JavaScript 32
- MySQL 16
- Nginx 7
- PHP 41
- phpMyAdmin 2
- SVG 3
- URL 1
- XML 3
- Безопасность 4
- Библиотека JS 12
- Графика 1
- Доменное имя 1
- Инструкция 1
- Кодировка 2
- Контент 6
- Мнение 2
- Монетизация сайта 2
- Настройка 3
- Оптимизация 2
- Ошибка 7
- Поисковая система 1
- Продвижение сайта 6
- Софт 1
- Старт 2
- Функция 1
- Хостинг | Сервер 3