我正在处理一个我正在处理的网站的问题.css抛出了404错误,而且现在已经让我有一天多的问题了。我最近在我的机器上使用IIS10设置了本地托管的Laravel 5站点。我有一个存储在/ views / layouts(layout.blade.php)中的主布局,其中包含这样的样式表:
<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/我的所有视图都显示没有任何样式。打开开发人员工具有七个错误说明:
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>
我最初使用IIS中的URL Rewrite模块生成了web.config文件(存储在公用文件夹中),但<staticContent>...</staticContent>
与我尝试解决此问题时所做的第三条规则之间的添加
我还认为问题可能在于处理程序映射,特别是使用*通配符作为RequestPath的StaticFile。我保留了那个,但我还定义了单独的处理程序,*.css
和*.js
没有帮助。
有没有人对我可以尝试的其他事情有任何建议?只是为了澄清,这里有一些关于我的设置的其他信息:
Static Content
已启用(我也禁用并重新启用它,因为其他一些网站建议)。提前感谢任何可以提供帮助的人!
答案 0 :(得分: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>
现在一切都按照你期望的方式运作。