2015-10-15 2 views
0

У меня проблема с сайтом, над которым я работаю, где .css выдает ошибку 404, и это вызывает у меня проблемы уже более дня. Недавно я установил сайт Laravel 5, размещенный локально на моей машине с IIS10. У меня есть мастер-макет находится в/Views/раскладок (layout.blade.php), где я включаю таблицы стилей, как это:IIS, не обслуживающий файлы .css & .js для сайта Laravel

<head> 
    ... 

    <link href="{{URL::asset('css/bootstrap.min.css')}}" rel="stylesheet" /> 
    <link href="{{URL::asset('css/font-awesome.min.css')}}" rel="stylesheet" /> 
    <link href="{{URL::asset('css/prettyPhoto.css')}}" rel="stylesheet" /> 
    <link href="{{URL::asset('css/price-range.css')}}" rel="stylesheet" /> 
    <link href="{{URL::asset('css/animate.css')}}" rel="stylesheet" /> 
    <link href="{{URL::asset('css/main.css')}}" rel="stylesheet" /> 
    <link href="{{URL::asset('css/responsive.css')}}" rel="stylesheet" /> 

    ... 
</head> 

Теперь, если открыть браузер и перейти к http://localhost/test_site/public/ все мои взгляды появляются SANs любой стиль. Открытие инструментов разработчика есть семь ошибок, заявляющие:

HTTP404: NOT FOUND - The server has not found anything matching the requested URI. (XHR): GET - http://localhost/test_site/public/css/<filename>.css 

Я запутался, почему, если путь показывается в файл CSS правильно, то почему бы ей не оказывать, как и следовало ожидать его к. Моя первая мысль была, что была проблема с моей web.config файла, который я имею, как:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <staticContent> 
      <remove fileExtension=".css" /> 
      <mimeMap fileExtension=".css" mimeType="text/css" /> 

      <remove fileExtension=".js" /> 
      <mimeMap fileExtension=".js" mimeType="application/javascript" /> 

      <remove fileExtension=".jpg" /> 
      <mimeMap fileExtension=".jpg" mimeType="image/jpeg" /> 

      <remove fileExtension=".png" /> 
      <mimeMap fileExtension=".png" mimeType="image/png" /> 
     </staticContent> 
     <rewrite> 
      <rules> 
       <rule name="Rewrite rule1 for laravel_rewrite"> 
       <match url=".*" /> 
       <conditions> 
        <add input="{laravel_rewrite:{HTTP_HOST}}" pattern="(.+)" /> 
       </conditions> 
       <action type="Rewrite" url="{C:1}{REQUEST_URI}" appendQueryString="false" /> 
      </rule> 
      <rule name="Rule 2" stopProcessing="true"> 
       <match url="^" ignoreCase="false" /> 
       <conditions> 
        <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="/Tutorial/public/" /> 
      </rule> 
      <rule name="Rewrite routed access to assets(img, css, files, js, favicon)" stopProcessing="true"> 
       <match url="^(img|css|files|js|favicon.ico)(.*)$" /> 
       <action type="Rewrite" url="/Tutorial/public/{R:1}{R:2}" appendQueryString="false" /> 
      </rule> 
     </rules> 
     <rewriteMaps> 
      <rewriteMap name="laravel_rewrite"> 
       <add key="localhost" value="/Tutorial/public" /> 
      </rewriteMap> 
     </rewriteMaps> 
    </rewrite> 
</system.webServer> 
</configuration> 

я первоначально создан файл web.config (который хранится в общей папке) с помощью URL Rewrite модуль в IIS, но дополнения между <staticContent>...</staticContent> и третье правило, которое я сделал как попытку исправить эту проблему.

Я также думал, что проблема может быть связана с сопоставлениями обработчиков, в частности с StaticFile, который использует подстановочный знак * в качестве RequestPath. Я оставил это на месте, но я также определил отдельные обработчики с *.css и *.js, которые не помогли.

Есть ли у кого-нибудь предложения относительно других вещей, которые я мог бы попробовать? Просто чтобы прояснить, вот некоторые дополнительные сведения о моей установке:

  • Функция Windows, Static Content включена (я отключен и снова включен как некоторые другие сайты предложили).
  • IUSR имеет соответствующие разрешения для доступа ко всем папкам сайта.

Заранее благодарим всех, кто может помочь!

ответ

0

Так после того, как возиться с несколькими вещами, в том числе создание новых сопоставлений обработчиков для каждого отдельного типа файла и тому подобное, я удалил свой web.config и создал новый, который сделал трюк для меня:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="Imported Rule 1" stopProcessing="true"> 
       <match url="^(.*)/$" ignoreCase="false" /> 
       <conditions> 
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> 
       </conditions> 
       <action type="Redirect" redirectType="Permanent" url="public/{R:1}" /> 
      </rule> 
      <rule name="Imported Rule 2" stopProcessing="true"> 
       <match url="^" ignoreCase="false" /> 
       <conditions> 
        <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> 
</configuration> 

Теперь все работает именно так, как вы ожидали.

Смежные вопросы