Перезапись .htaccess: как обслуживать контент из разных папок, сохраняя URL-адрес ⇐ Php
Перезапись .htaccess: как обслуживать контент из разных папок, сохраняя URL-адрес
У меня есть сайт, который я разрабатываю на локальном хосте, который будет развернут на работающем хосте. Я использую сервер Apache и хочу использовать .htaccess для перенаправления и перезаписи контента.
На локальном хосте корень сайта:
https://localhost/example На livehost корень сайта будет:
https://example.com В моем файле .htaccess я определил:
SetEnvIf Request_URI "^.*" LOCALHOST=https://localhost/example SetEnvIf Request_URI "^.*" LIVEHOST=https://example.com Это позволяет перезаписывать такие условия, как:
RewriteCond %{HTTP_HOST} =localhost и:
RewriteCond %{HTTP_HOST} !=localhost ...который мне понадобится разветвить, чтобы разместить сайт при его обслуживании на локальном хосте, а не на активном сайте.
Следующее описание относится к среде localhost, но мне понадобится код, который будет работать и для действующего сайта (именно поэтому я определил константы).
Я хочу переписать .htaccess, например:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule example/(.*)$ example/pages/$1 [L,NC] ...но я изо всех сил пытаюсь заставить это работать.
Вот структура папок:
[*]пример/ страницы/ дом/ [*]ошибка/ [*][различные папки со структурой подпапок или без них] [*][папки с общедоступными ресурсами, например папки с такими именами, как css, favicons, fonts, images >, javascript] [*]частный -> [папка, содержащая серверные файлы и папки, которые не должны быть общедоступными]
Итак, если клиент перейдет к:
пример/домашняя страница пример/ошибка пример/все-другие-страницы ...без или без косой черты в конце, тогда контент должен обслуживаться из:
пример/страницы/домашняя страница пример/страницы/ошибка пример/страницы/все-другие-страницы ...без изменения URL.
Исключение: если клиент переходит в корень сайта:
пример ...без косой черты или без нее, тогда контент должен обслуживаться с:
пример/страницы/домашняя страница ...без изменения URL.
Как правило, любой переход к example/*, у которого нет соответствующего example/pages/*, будет отображать контент из:
пример/страницы/ошибка ...без изменения URL-адреса. (Хотя здесь возникает вопрос о передовом опыте, который поднимается в конце.)
Итак, если клиент перейдет к example/css и папка example/pages/css отсутствует, он будет обслуживать example/pages/error< /код>.
Но если клиент перейдет к example/css/site.css, то, если этот ресурс существует, он будет его обслуживать.
Примечание. При переходе к example/pages будет отображаться содержимое example/pages/error, при условии, что example/pages/pages не существует. > на сервере (в этом случае содержимое этой страницы фактически будет отображаться без изменения URL-адреса).
Внутренняя навигация (внутри серверного кода) по каталогам /pages/ не должна блокироваться.
Публичный переход к example/private будет блокироваться тем же механизмом, что и для ресурсов папки страниц, например, example/private/my-stuff будет искать < code>example/pages/private/my-stuff и ничего не найти и, таким образом, перенаправить.
Вопрос о передовом опыте: при перенаправлении на страницу с ошибкой, когда следует изменить URL-адрес на URL-адрес страницы с ошибкой, а когда его следует оставить в покое, хотя при этом отображается контент из example/ страницы/ошибка? Перенаправления должны поддерживать все лучшие практики.
Большое спасибо!
У меня есть сайт, который я разрабатываю на локальном хосте, который будет развернут на работающем хосте. Я использую сервер Apache и хочу использовать .htaccess для перенаправления и перезаписи контента.
На локальном хосте корень сайта:
https://localhost/example На livehost корень сайта будет:
https://example.com В моем файле .htaccess я определил:
SetEnvIf Request_URI "^.*" LOCALHOST=https://localhost/example SetEnvIf Request_URI "^.*" LIVEHOST=https://example.com Это позволяет перезаписывать такие условия, как:
RewriteCond %{HTTP_HOST} =localhost и:
RewriteCond %{HTTP_HOST} !=localhost ...который мне понадобится разветвить, чтобы разместить сайт при его обслуживании на локальном хосте, а не на активном сайте.
Следующее описание относится к среде localhost, но мне понадобится код, который будет работать и для действующего сайта (именно поэтому я определил константы).
Я хочу переписать .htaccess, например:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule example/(.*)$ example/pages/$1 [L,NC] ...но я изо всех сил пытаюсь заставить это работать.
Вот структура папок:
[*]пример/ страницы/ дом/ [*]ошибка/ [*][различные папки со структурой подпапок или без них] [*][папки с общедоступными ресурсами, например папки с такими именами, как css, favicons, fonts, images >, javascript] [*]частный -> [папка, содержащая серверные файлы и папки, которые не должны быть общедоступными]
Итак, если клиент перейдет к:
пример/домашняя страница пример/ошибка пример/все-другие-страницы ...без или без косой черты в конце, тогда контент должен обслуживаться из:
пример/страницы/домашняя страница пример/страницы/ошибка пример/страницы/все-другие-страницы ...без изменения URL.
Исключение: если клиент переходит в корень сайта:
пример ...без косой черты или без нее, тогда контент должен обслуживаться с:
пример/страницы/домашняя страница ...без изменения URL.
Как правило, любой переход к example/*, у которого нет соответствующего example/pages/*, будет отображать контент из:
пример/страницы/ошибка ...без изменения URL-адреса. (Хотя здесь возникает вопрос о передовом опыте, который поднимается в конце.)
Итак, если клиент перейдет к example/css и папка example/pages/css отсутствует, он будет обслуживать example/pages/error< /код>.
Но если клиент перейдет к example/css/site.css, то, если этот ресурс существует, он будет его обслуживать.
Примечание. При переходе к example/pages будет отображаться содержимое example/pages/error, при условии, что example/pages/pages не существует. > на сервере (в этом случае содержимое этой страницы фактически будет отображаться без изменения URL-адреса).
Внутренняя навигация (внутри серверного кода) по каталогам /pages/ не должна блокироваться.
Публичный переход к example/private будет блокироваться тем же механизмом, что и для ресурсов папки страниц, например, example/private/my-stuff будет искать < code>example/pages/private/my-stuff и ничего не найти и, таким образом, перенаправить.
Вопрос о передовом опыте: при перенаправлении на страницу с ошибкой, когда следует изменить URL-адрес на URL-адрес страницы с ошибкой, а когда его следует оставить в покое, хотя при этом отображается контент из example/ страницы/ошибка? Перенаправления должны поддерживать все лучшие практики.
Большое спасибо!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение