Перезапись .htaccess: как обслуживать контент из разных папок, сохраняя URL-адресPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Перезапись .htaccess: как обслуживать контент из разных папок, сохраняя URL-адрес

Сообщение Anonymous »


У меня есть сайт, который я разрабатываю на локальном хосте, который будет развернут на работающем хосте. Я использую сервер 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/ страницы/ошибка? Перенаправления должны поддерживать все лучшие практики.

Большое спасибо!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»