Перезапись с public_html на root

Я пытаюсь прочитать многие ответы о htaccess, но не могу найти выход. Изобразите эту архитектуру в веб-хостинге: root/public_html/subfolder Теперь со следующим кодом в файле htaccess (помещенном в public_html) я могу сделать так, чтобы при вводе домена в браузере посетитель попадал в подпапку без цифры example.com/subfolder, например. ком достаточно. Оно работает. Теперь я хотел бы, чтобы посетитель был перенаправлен не в подпапку, а в «дополнительную папку», расположенную внутри корня (корневой уровень, который является тем же уровнем, где находится папка public_html, но не внутри public_html). Итак, как изменить этот код:

# .htaccess main domain to subdirectory redirect
# Do not change this line.
RewriteEngine on
# Change example.com to be your main domain.
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteCond %{REQUEST_URI} !^/subfolder/
# Don't change the following two lines.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteRule ^(.*)$ /subfolder/$1
# Change example.com to be your main domain again.
# Change 'subdirectory' to be the directory you will use for your main domain
# followed by / then the main file for your site, index.php, index.html, etc.
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ /subfolder/index.html [L] 

Я пытаюсь изменить /subfolder/ с помощью ../extrafolder/ (предположим, что двойная точка поднимет один уровень вверх), но не работает. Есть идеи? Спасибо


person Massimiliano Rubino    schedule 06.06.2016    source источник
comment
Предполагается, что это будет игра из двух частей, вы просто помещаете вторую часть в конфигурацию .htaccess, но первая часть — это виртуальный хост конфигурации сайта apache, вы можете найти его в /etc/apache2/sites-enabled/, если вы используя систему на базе Linux. Если вам нужен четкий ответ, который может вам помочь, вам также нужно установить конфигурацию apache.   -  person Ahmed Rashad    schedule 06.06.2016
comment
Спасибо, что ответили мне. Я проверяю, но у меня нет этого файла/папки и т. д. В конечном итоге я могу создать обработчик Apache. Любая другая идея?   -  person Massimiliano Rubino    schedule 07.06.2016
comment
Хорошо, я установлю это в ответ.   -  person Ahmed Rashad    schedule 07.06.2016


Ответы (1)


Текущая конфигурация, которую вы указали, работает только в том случае, если вы поместите .htaccess в корневую папку вашего веб-сайта, которая в данном случае является public_html, поэтому нет возможности получить доступ к другой папке вне этого корня, за исключением случаев, когда у вас есть псевдоним каталога.

Если у вас есть доступ к изменению настроек Apache

Вам необходимо выполнить следующие шаги, чтобы полностью контролировать корень вашего сайта.

1- Ваша конфигурация виртуального хоста apache (это должно быть в /etc/apache2/sites-enabled/example.conf) должна быть примерно следующей:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/test
    <Directory /var/www/test/>
        DirectoryIndex index.php
        AllowOverride All
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

3- Вам необходимо добавить этот Псевдоним /externalfolder/ "/var/www/test/externalfolder/" в конфигурацию виртуального хоста выше.

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/test/public_html
    Alias /externalfolder/ "/var/www/test/externalfolder/"
    <Directory /var/www/test/public_html>
        DirectoryIndex index.php
        AllowOverride All
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

Теперь вы можете получить к нему доступ через http://example.com/externalfolder/file.php.

person Ahmed Rashad    schedule 07.06.2016
comment
Спасибо, я узнал, что у меня нет доступа к конфигурации виртуального хоста apache, поэтому единственное, что я могу сделать, это полностью изменить весь хостинг: переместить папку из корня в общедоступную, а общедоступную папку в корень, чтобы у меня было посетители попадают в папку, которую я хочу... Я не мог придумать ничего лучше. В любом случае, любая идея в последнюю минуту приветствуется. - person Massimiliano Rubino; 12.06.2016
comment
Нет, извините, я пытался найти способ создать псевдоним каталога в чем-то вроде cPanel, но не смог найти. - person Ahmed Rashad; 12.06.2016