// Добавление слеша в конце 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/ permanent; # Добавление слеша в конце URL, если его там нет
try_files $uri /index.php?do=$uri;
location ~ [^/]\.ph(p\d*|tml)$ {
try_files /does_not_exists @php;
}
}
После чего перечитал конфигурацию, при помощи команды:
nginx -s reload
PHP код удаляю. Теперь работает Nginx.
Возможно, будет интересно:
- Блог: Nginx: Удаление лишних слэшев в URL
- Блог: Nginx: Удаление параметров в URL