htaccess обнаружил странность
Доброго дня.
Странную штуку обнаружил.
Уж так сложилось, что не люблю я когда на конце страницы отображается ".html" и слеш у контейнеров "/"
Посему убрал расширение «html» у страниц и слеш у контейнеров.
Теперь к .htaccess
В нем расскомментировал:
И добавил переадресацию со страницы со слешем на конце, что бы не было ложных срабатываний 404
И вот тут то самое интересное!!!!!!
Как только добавляю переадресацию со страницы со слешем на конце. В админке перестает отображаться содержимое вкладки ФАЙЛЫ
Как только убираю из .htaccess переадресацию со страницы со слешем на конце. Все содержимое вкладки «ФАЙЛЫ» появляется.
Подскажите что за дела такие?
Странную штуку обнаружил.
Уж так сложилось, что не люблю я когда на конце страницы отображается ".html" и слеш у контейнеров "/"
Посему убрал расширение «html» у страниц и слеш у контейнеров.
Теперь к .htaccess
В нем расскомментировал:
# Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^site\.ru [NC]
RewriteRule (.*) http://site.ru/$1 [R=301,L]
И добавил переадресацию со страницы со слешем на конце, что бы не было ложных срабатываний 404
RewriteRule ^(manager)/*$ - [L] # exclude manager folder
RewriteCond %{REQUEST_URI} (.*)/
RewriteRule ^(.*)/$ http://site.ru/$1 [R=301,L]
И вот тут то самое интересное!!!!!!
Как только добавляю переадресацию со страницы со слешем на конце. В админке перестает отображаться содержимое вкладки ФАЙЛЫ
Как только убираю из .htaccess переадресацию со страницы со слешем на конце. Все содержимое вкладки «ФАЙЛЫ» появляется.
Подскажите что за дела такие?
Комментарии: 7
А ты подумай, нет ли в работе файловой системы таких штук, имена которых заканчиваются на слэш? Например, директорий?
А вдруг (ну просто, в порядке бреда), твой редирект может как-то помешать открыть директорию /assets/, например?
А вдруг (ну просто, в порядке бреда), твой редирект может как-то помешать открыть директорию /assets/, например?
Смириться и жить без редиректа?
А может написать для каждой папки в корне свой .htaccess?)
Как хочешь.
Можно сделать это через плагин на загрузку web страницы, тогда он будет работать только когда нужно.
Можно сделать это через плагин на загрузку web страницы, тогда он будет работать только когда нужно.
Ну как бы это… Не правильно жеж настроено.
У тебя переадресация идёт абсолютно для любых адресов, а тебе надо только для несуществующих.
Изначально смысл такой — если папка или директория физически на сервере не существует, то этот адрес отправляется в index.php в get-параметре «q», и этот параметр уже обрабатывает сам modx (ищет этот урл среди ресурсов).
Вот эти строки оригинальном htaccess'е, который идёт вместе с modx (1):
Так вот этот приём и нужно использовать (2):
Строки (2) нужно вставить перед строками (1), иначе апач отдаст строку с урл в index.php и до редиректа дело не дойдёт.
p.s. и да, я не тестировал, пишу по памяти ибо последний раз htaccess настраивал с год назад. Но вроде должно работать. Переходите на nginx :-)
У тебя переадресация идёт абсолютно для любых адресов, а тебе надо только для несуществующих.
Изначально смысл такой — если папка или директория физически на сервере не существует, то этот адрес отправляется в index.php в get-параметре «q», и этот параметр уже обрабатывает сам modx (ищет этот урл среди ресурсов).
Вот эти строки оригинальном htaccess'е, который идёт вместе с modx (1):
RewriteCond %{REQUEST_FILENAME} !-f # файл на сервере физически не существует
RewriteCond %{REQUEST_FILENAME} !-d # директория на сервере физически не существует
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] # отправляем этот адрес в точку входа modx
Так вот этот приём и нужно использовать (2):
RewriteCond %{REQUEST_FILENAME} !-f # файл на сервере физически не существует
RewriteCond %{REQUEST_FILENAME} !-d # директория на сервере физически не существует
RewriteCond %{REQUEST_URI} (.*)/ # проверяем, что есть слэш на конце урл
RewriteRule ^(.*)/$ http://site.ru/$1 [R=301,L] #делаем редирект
И уже не нужно писать отдельные условия-исключения для всяких там папок, типа 'manager', 'assets' и всех других.Строки (2) нужно вставить перед строками (1), иначе апач отдаст строку с урл в index.php и до редиректа дело не дойдёт.
p.s. и да, я не тестировал, пишу по памяти ибо последний раз htaccess настраивал с год назад. Но вроде должно работать. Переходите на nginx :-)
Искреннее ОГРОМНОЕ человеческое спасибо, за столь подробное обьяснение, все работает
Не за что :-)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.