Используйте .htaccess для загрузки индексного файла из указанного c местоположения, а URL-адрес не существует - PullRequest
0 голосов
/ 18 июня 2020

Мне нужно использовать .htaccess для загрузки индексного файла из указанного c каталога, когда пользователь видит несуществующий URL. Вот моя структура папок:

root/realdirectory/virtualdirectory/virtualproducturl

мой индексный файл находится в корневом / реальном каталоге

И еще кое-что, что делает задачу более полной: root / realdirectory / index. php имеет для загрузки, если пользователь посещает:

-root/realdirectory/virtualdirectory/virtualproducturl or 
-root/realdirectory/virtualdirectory/

«Виртуальный каталог» - это моя категория продукта, и когда пользователь посещает только URL-адрес категории, я хочу показать ему некоторую информацию из корневого / реального каталога / индекса. php Заранее спасибо

1 Ответ

1 голос
/ 18 июня 2020

Звучит довольно просто: когда запрос не разрешается в существующий файл или папку, внутренне переписывает его в «индексный документ»:

RewriteEngine on
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule ^ /index.php [END]

В случае вы получаете внутреннюю ошибку сервера (http-статус 500), используя приведенное выше правило, тогда есть вероятность, что вы используете очень старую версию http-сервера apache. В этом случае вы увидите явный намек на неподдерживаемый флаг [END] в файле журнала ошибок вашего http-сервера. Вы можете попробовать обновить или использовать более старый флаг [L], он, вероятно, будет работать так же в этой ситуации, хотя это немного зависит от ваших настроек.

Эта реализация будет работать аналогично в конфигурации хоста http-серверов или внутри файла распределенной конфигурации (файл ".htaccess"). Очевидно, что модуль перезаписи должен быть загружен внутри http-сервера и включен на http-хосте. В случае, если вы используете распределенный файл конфигурации, вам необходимо позаботиться о том, чтобы его интерпретация была вообще включена в конфигурации хоста и чтобы он находился в папке хоста DOCUMENT_ROOT.

И общее замечание: вы всегда должны предпочитать размещать такие правила в конфигурации хоста http-серверов вместо использования файлов распределенной конфигурации (".htaccess"). Эти распределенные файлы конфигурации добавляют сложности, часто являются причиной неожиданного поведения, их трудно отлаживать, и они действительно замедляют работу http-сервера. Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читайте: действительно дешевые поставщики услуг) или для приложений, настаивающих на написании своих собственных правил (что является очевидным кошмаром безопасности).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...