Рейтинг:0

Веб-сайты IIS в подкаталоге => Исходные запросы HTML к корню "/" указывают на веб-сайт по умолчанию вместо подкаталога

флаг ph

Наш IIS размещает наш собственный веб-сайт. Но недавно нам было поручено разместить сторонний веб-сайт, созданный с использованием Laravel, в подкаталоге.

Веб-сайт загружается, но большинство ресурсов, таких как файлы CSS и JS, не загружаются (404) из-за того, как сторонний сайт запрашивает свои ресурсы. Например:

<script source="/js/site.js"></script>

/js/site.js переводится как https://defaultwebsite/js/site.js которого не существует. я нуждаюсь /js/site.js to переводится как https://defaultwebsite/laravel/public/js/site.js.

Возможно ли это в IIS 10?

Вот набросок дерева каталогов:

+ веб-сайт по умолчанию
| + ларавель
| | + публичный
| | | + js
| | | | - сайт.js
| | | - index.php
| + js
| | - наши собственные js.js
| - index.php

У нас есть два правила перезаписи, настроенные для обработки перенаправления. https://сайт по умолчанию/лаварель к https://defaultwebsite/laravel/public как это:

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Imported Rule 1-1" stopProcessing="true">
                <match url="^" ignoreCase="false" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{HTTP_AUTHORIZATION}" ignoreCase="false" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    <add input="{URL}" pattern="(.+)/$" ignoreCase="false" />
                </conditions>
                <action type="Redirect" url="{C:1}" redirectType="Permanent" />
            </rule>
            <rule name="Imported Rule 2-1" stopProcessing="true">
                <match url="^" ignoreCase="false" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                </conditions>
                <action type="Rewrite" url="index.php" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

ОБНОВИТЬ Недавно я добавил это правило в root (веб-сайт по умолчанию), но, похоже, оно не срабатывает, когда сайт laravel запрашивает ресурсы. Хотя я вижу, что шаблон HTTP_REFERER верен.

    <rewrite>
        <rewriteMaps>
            <rewriteMap name="Root" />
        </rewriteMaps>
        <rules>
            <rule name="Rewrite Root => Laravel" stopProcessing="true">
                <match url="(img|js|css)?(.*)" />
                <conditions>
                    <add input="{HTTP_REFERER}" pattern="^https://www.defaultsite.be/laravel(.*)" />
                </conditions>
                <action type="Rewrite" url="laravel/public/{R:1}{R:2}" appendQueryString="true" logRewrittenUrl="true" />
            </rule>
        </rules>
    </rewrite>
Рейтинг:0
флаг ph

Ну я сам не до конца понимаю. IIS никогда не будет моим другом :)

Он начал работать, когда я изменил правило на перенаправление вместо перезаписи:

<rules>
    <rule name="Rewrite Root => Laravel" stopProcessing="true">
        <match url="(img|js|css)?(.*)" />
        <conditions>
            <add input="{HTTP_REFERER}" pattern="laravel/.*" />
            <!-- <add input="laravel\public\{R:1}{R:2}" matchType="IsFile" /> -->
            
        </conditions>
        <action type="Redirect" url="/laravel/{R:0}" appendQueryString="true" logRewrittenUrl="false" redirectType="Permanent" />
    </rule>
</rules>

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.