Архив рубрики: Веб

Материалы обо всем, что связано с веб-дизайном и разработкой

Error 404 при перенаправлении URL в Joomla 3 на техническом домене

При подготовке к переносу сайта на Joomla на новый хостинг столкнулся с такой проблемой.
Домен на данном этапе еще не был перенаправлен на новый хостинг и для проверки и отладки использовался технический домен вида http://192.168.0.1/~username/ .
При включенном Перенаправление URL (Use URL Rewriting) все страницы, кроме домашней возвращали ошибку 404.
Отключение функции Перенаправление URL решало проблему 404, но в адресах появлялся index.php, что было не желательно.
Как оказалось, проблема в .htaccess . Он некорректно обрабатывал переадресацию при использовании технического домена, где «физическое» расположение папки с сайтом не соответствовало реальному.
Для решения данной проблемы оказалось достаточно добавить (скорректировать) строку с командой RewriteBase
RewriteBase /~username

.htaccess — Запрещаем доступ к несуществующим компонентам Joomla!

Анализируя логи системы перенаправлений Joomla! выявил группу запросов ботов представляющих попытки нащупать наличие у вас компонентов имеющих какую либо уязвимость, например

http://yourdomain.com?option=com_vitabook

Если подобный компонент у вас установлен, то деваться некуда и вы сами должны позаботиться о его безопасности. Но если таких компонентов нет, то в таблицу перенаправлений регистрируется множество совершенно ненужных запросов.

Избавиться от регистрации таких записей можно добавлением нескольких строк в .htaccess

Читать далее .htaccess — Запрещаем доступ к несуществующим компонентам Joomla!

.htaccess — Несколько доменов в одном

Довольно часто для одного сайта имеется несколько доменных имен. Настройка доменных записей достаточна, чтобы сайт работал с любым доменным именем.

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

Читать далее .htaccess — Несколько доменов в одном

Реализация наследования паттерна Singleton в PHP

Паттерн Singleton (Одиночка) уже многократно обсуждался, тем не менее я не нашел решения позволяющего реализовать наследование от Singleton-а не нарушающего основной идеи Singleton-а — скрытие конструктора класса.

Ниже приведен пример моей реализации такого механизма не нарушающего сущность паттерна с использованием трэйта.

Читать далее Реализация наследования паттерна Singleton в PHP

В чем разница между isset и array_key_exists

Есть ли разница между isset() и array_key_exists()?

Да есть, и её непонимание может подложить грабли.

Разница состоит в том, что если элемент массива имеет значение null, то isset() для этого элемента вернет false, а array_key_exists()true.

В принципе, это вполне логично, так как само название функции array_key_exists() говорит о том, что функция проверяет наличие ключа в массиве, а какое значение сопоставлено этому ключу, ее мало волнует.

Вроде бы и мелочь, но забывать об этом не стоит.

Читать далее В чем разница между isset и array_key_exists

Разбираем .htaccess для Joomla!

Итак, возьмем .htaccess от Joomla! (я взял от версии 3.4.1) и посмотрим, что в нем интересного и как это все работает.

В первой незакомментированной строке видим команду IndexIgnore

IndexIgnore *

Если в конфигурации вашего сервера или в .htaccess файле включена опция

Options +Indexes

, то при обращении к папке, в которой нет файлов index.php или index.html, на экране браузера будет выведен листинг этой папки со всеми файлами и вложенными папками.

Читать далее Разбираем .htaccess для Joomla!

Как указать Last-Modified для страницы?

Для того, чтобы помочь браузеру понять, надо ли обновить страницу, сохраненную в кэш, полезно в заголовке запроса указывать дату последней модификации страницы. Сделать это можно следующим образом:

Читать далее Как указать Last-Modified для страницы?