<IfModule mod_rewrite.c>
# Enable rewrite engine
RewriteEngine On
#Removes access to the system folder by users.
RewriteCond %{REQUEST_URI} ^app.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
# Some extra conditions
# skip these paths for redirection
RewriteRule ^img/(.*) public/assets/img/$1 [L]
RewriteRule ^css/(.*) public/assets/css/$1 [L]
RewriteRule ^js/(.*) public/assets/js/$1 [L]
RewriteRule ^plugins/(.*) public/assets/plugins/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_URI} !^.*\.(jpg|css|js|gif|png)$ [NC]
RewriteRule ^(.*)$ public/index.php?url=/$1 [QSA,L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
ErrorDocument 404 /index.php
</IfModule>
这种重写是有效的,除了当我加载像这个localhost/login/
(尾随斜杠)的URL时,它没有加载资源。当我使用localhost/login
时,它会加载所有图像和CSS文件。有人可以帮我解决这个问题。
答案 0 :(得分:0)
这可能是因为您在HTML中使用相对路径。在URL的末尾有一个额外的斜杠,就客户端URL而言,你实际上在另一个子文件夹中。
要解决此问题,请在客户端代码中使用root-relative(以斜杠开头)或绝对URL。例如:
/img/picture.jpg
或者,如果您无法修改网址,请在base
部分中添加head
元素,以指示浏览器相对于哪些相对网址。例如,要使它们相对于文档根目录:
<base href="/">
或者,通过重定向到.htaccess中的非斜杠网址或在index.php
中处理此事件来防止尾随斜杠返回有效文档。