Laravel 5 - URL重写和CSS冲突
Laravel 5 - URL Rewriting and CSS conflict
我的 Laravel 5 中用于 URL 重写的 .htaccess 和我的 CSS 文件之间存在问题。首先,这是我的项目树:
我的 public 文件夹中有一个 .htaccess,如图所示。这是我的 .htaccess 的内容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -Indexes
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ / [L,R=301]
RewriteRule ^ index.php [L]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
</IfModule>
这是我用来删除 URL 中的 "index.php" 的代码。例如,http://localhost/mySite/public/index.php/about
变为 http://localhost/mySite/public/about
。
现在,我有一个母版页(在 /resources/views/
中),在这个母版页中,我想引用位于 /public/css/style.css
中的 css 文件。我在母版页中添加了这段代码:
<link rel='stylesheet' href="{{ URL::asset('css/style.css') }}" >
这不适用于当前的 htaccess,但如果我在我的 htaccess 中注释行 RewriteRule ^ index.php [L]
并访问 URL(使用 "index.php"),样式表将被很好地引用。我想我必须在 htaccess 中添加另一行,但我不知道我必须添加什么。
我希望你能帮助我,不要犹豫,询问更多细节。谢谢。
为什么要更改 default .htaccess?
应该是这样的:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ / [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
两个 RewriteCond
阻止将文件请求路由到 Laravel。但它们必须 在 之前 RewriteRule
才有效。
我的 Laravel 5 中用于 URL 重写的 .htaccess 和我的 CSS 文件之间存在问题。首先,这是我的项目树:
我的 public 文件夹中有一个 .htaccess,如图所示。这是我的 .htaccess 的内容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -Indexes
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ / [L,R=301]
RewriteRule ^ index.php [L]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
</IfModule>
这是我用来删除 URL 中的 "index.php" 的代码。例如,http://localhost/mySite/public/index.php/about
变为 http://localhost/mySite/public/about
。
现在,我有一个母版页(在 /resources/views/
中),在这个母版页中,我想引用位于 /public/css/style.css
中的 css 文件。我在母版页中添加了这段代码:
<link rel='stylesheet' href="{{ URL::asset('css/style.css') }}" >
这不适用于当前的 htaccess,但如果我在我的 htaccess 中注释行 RewriteRule ^ index.php [L]
并访问 URL(使用 "index.php"),样式表将被很好地引用。我想我必须在 htaccess 中添加另一行,但我不知道我必须添加什么。
我希望你能帮助我,不要犹豫,询问更多细节。谢谢。
为什么要更改 default .htaccess?
应该是这样的:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ / [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
两个 RewriteCond
阻止将文件请求路由到 Laravel。但它们必须 在 之前 RewriteRule
才有效。