Назад | Перейти на главную страницу

Обслуживать страницу PHP в корневом веб-каталоге, но отображать содержимое в подкаталогах

У меня есть веб-сайт на сервере виртуального хостинга. Макет моего каталога выглядит так

/home
    /user
        /public_html
            /pics
                /family

В public_html есть файл index.php. Мне нужна помощь в написании правил .htaccess, которые будут

  1. Подавать файл index.php при запросе www.domain.org
  2. Заставить пользователя вернуться к public_html при запросе www.domain.org/pics
  3. Разрешить пользователю видеть содержимое каталога при запросе www.domain.org/pics/family

Я экспериментировал с множеством комбинаций RewriteCond и RewriteRule, но я недостаточно хорошо понимаю документацию и примеры, чтобы знать, возможно ли то, что я хочу сделать.

Приложение веб-сервера - это некоторая версия Apache.

1) Вы можете получить его бесплатно, добавив DirectoryIndex index.php в вашем файле .htaccess, который находится в public_html.

2) Чтобы перенаправить запросы на / pics, вы можете использовать этот набор правил перезаписи:

RewriteRule ^pics/?$ http://www.domain.org/ [R,L]

3) Вам нужно будет использовать с параметрами:

<Directory "/home/user/public_html/pics/family">
    Options Indexes
</Directory>

Вам нужно будет убедиться в конфигурации вашего веб-сервера или виртуального хоста, что вы можете переопределить параметры в файлах .htaccess. Что-то вроде AllowOverride All или AllowOverride Indexes. Также обратите внимание, что с # 2 люди по-прежнему смогут получить доступ к файлам на фотографиях, например. http://www.domain.org/pics/pic1.jpg, но будет перенаправлен при попытке просто получить доступ к каталогу.

Я поместил это в public_html / .htaccess

RewriteEngine On
RewriteCond %{REQUEST_URI} "/pics/" [OR]
RewriteCond %{REQUEST_URI} "/pics/family/"
RewriteRule (.*) $1 [L]

В public_html / pics / .htaccess ничего нет
Я поместил это в public_html / pics / family / .htaccess

Options +Indexes

Я удалил index.html.

После этого все заработало так, как я хотел. Я получил идею от эта документация Drupal.