Корень документа IIS в подпапке - PullRequest
2 голосов
/ 27 апреля 2011

Привет, у меня есть проект PHP Windows Azure, но я новичок в IIS.У меня есть PHP-библиотеки в корневой папке и клиентские файлы, такие как index.php, таблицы стилей или javascripts в подпапке с именем document_root.

Как настроить IIS 7 (возможно, с помощью Web.config) для использования document_rootв качестве папки по умолчанию для сайта (что делает корень невидимым), поэтому я могу вызвать mydomain.tld / вместо mydomain.tld / document_root /

Я использовал:

<defaultDocument>
  <files>
    <clear />
    <add value="document_root/index.php" />
  </files>
</defaultDocument>

Что работаетхорошо, но он обращается только к index.php и не может найти какие-либо файлы, такие как /document_root/css/default.css (относительный адрес - css / default.css)

Ответы [ 3 ]

2 голосов
/ 29 апреля 2011

Есть 2 способа сделать это. Самый простой путь - использовать модуль перезаписи URL, включенный в IIS7. Пример перенаправления запросов в общую папку (и запрет на прямой доступ к этой папке):

<system.webServer>
    <rewrite>
        <rules>
            <clear />
            <rule name="blockAccessToPublic" patternSyntax="Wildcard" stopProcessing="true">
                <match url="*" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{URL}" pattern="/public/*" />
                </conditions>
                <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="You do not have permission to view this directory or page using the credentials that you supplied." />
            </rule>
            <rule name="RewriteRequestsToPublic" stopProcessing="true">
                <match url="^(.*)$" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                </conditions>
                <action type="Rewrite" url="public/{R:0}" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

Другой способ - изменить настройки IIS после развертывания приложения PHP. Для этого вам нужно переопределить метод OnStart вашей веб-роли, но я думаю, что первое решение подойдет вам.

1 голос
/ 02 апреля 2013

Измените ОСНОВНЫЕ НАСТРОЙКИ и СВЯЗЬ ВЕБ-САЙТА.Если у вас есть только один веб-сайт, вы, вероятно, просто захотите отредактировать ОСНОВНЫЕ НАСТРОЙКИ для ВЕБ-САЙТА ПО УМОЛЧАНИЮ:

  1. Открыть диспетчер IIS
  2. Нажмите веб-сайт по умолчанию
  3. В разделе Действия (справа) выберите Основные параметры
  4. Изменить физическое местоположение.

Если вы тестируете несколько веб-сайтов на одном компьютере разработчика (с разными папками "DOCUMENT_ROOT"),щелкните правой кнопкой мыши на каждом веб-сайте в списке «Редактировать привязки» и настройте различные веб-сайты для работы под разными номерами портов.Затем вы можете получить доступ к различным веб-сайтам, используя (например): http-colon-slash-slash localhost: 81

0 голосов
/ 27 апреля 2011

Я подхожу к этому с другой стороны (немного знаю PHP, но хорошо знаю IIS и Azure).Я не знаю, почему ваш проект структурирован так, как есть, поэтому я просто предположу, что по какой-то причине имеет .Я просто хотел бы отметить, что по моему опыту немного нетипично иметь подпапку, которую вы хотите использовать в качестве корня, а не просто иметь ее в корне.

Несмотря на это, методы, которые я бы рассмотрел, называются перезаписью или маршрутизацией, что позволяет вам перейти от стандартного способа анализа URL-адресов и их передачи к исполняемым страницам.В Stackoverflow есть множество публикаций, которые вы можете просмотреть, вот хороший Перезапись URL IIS против маршрутизации URL , который дает ответ о двух различных типах маршрутизации и о том, где их использовать.

Вы можете сделать это в web.config, и это должно позволить вам достичь того, что вы хотите.

...