@kayden

Как сделать редирект http и www и скрыть папки в url и расширение файлов?

Добрый день, уже два дня бьюсь над задачкой.
Суть вот в чем
Есть следующая структура
/pages/yslugi.php
/pages/
/

хочу сделать редиректы с www и https
убрать в url расширение файлов в конце, при этом не должен откывать путь с расширением
Пример: https://site.ru/yslugi НО!!! https://site.ru/yslugi.php должно средиректить или не найтись

и убрать из url папку pages

вроде задачка не сложная, я нашел решения по отдельности
RewriteCond %{DOCUMENT_ROOT}/pages/$1 -f
RewriteRule ^(.*)$ pages/$1 [L,QSA]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

но все вместе это не работает, еще на закрытие путей с расширением не нашел решения
(нашел вариант когда работают оба варианта).

если есть у когото решение данного вопроса буду благодарен
  • Вопрос задан
  • 330 просмотров
Пригласить эксперта
Ответы на вопрос 3
@dodo512
RewriteEngine On

RewriteCond %{THE_REQUEST}  " /(pages/|[^?]*\.php)" [OR]
RewriteCond %{SERVER_PORT}  !443    [OR]
RewriteCond %{HTTP_HOST}    ^www\.  [NC]
RewriteRule ^(pages/|)(.*?)(\.php|$) https://site.ru/$2 [R=301,L]

RewriteCond %{DOCUMENT_ROOT}/pages/$1.php -f
RewriteRule ^(.*)$ pages/$1.php [L,QSA]
Ответ написан
Тут ответ о редиректе
https://klondike-studio.ru/standards/standartnyy-h...
Что касаетс сокрашения папок в урлах при этом продолжения работы в них
Тут два варианта
1 создать мягкую ссылку
2. если у вас есть nginx +apache то можно это с легкость реализовть на nginx
3. не придумывать велосипед, таких задач просто не бывает, скорее всего вы пытаетесь решить определенную задачу не соответствующим методом, опишите более подробно зачем вы это делаете и чего хотите добиться этим?
Ответ написан
Комментировать
@kayden Автор вопроса
Файл .htaccess только в корне.
Задача вроде простая, и велосипедом назвать язык не поворачивается.
решение было простым и удобным.

был код .htaccess и работал прекрасно, до задачи https и www
# Если запрашиваемый объект не папка
RewriteCond %{REQUEST_FILENAME} !-d
# Если запрашиваемый объект с расширением php - файл
RewriteCond %{REQUEST_FILENAME}\.php -f
# Делаем замену с дописыванием ".php"
RewriteRule ^(.*)$ $1.php

RewriteCond %{DOCUMENT_ROOT}/pages/$1.php -f
RewriteRule (.*)$ pages/$1.php [L,QSA]

в папке pages находятся своего рода контроллеры, которые подключают из папки views отображения
/css
/img
/views
/pages
/
в корне .htaccess

пути были site.ru/yslugi
зачем указывать в путе папку pages
можно конечно решить вопрос просто выкинув "контроллеры" из папки pages в корень, но тогда получится каша
добиться хочу отсутствия pages в url, ведь сайт так уже работал, и это просто не красиво
и лишь https ломает логику
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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