Наш 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>