1
<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> 

这种重写是有效的,除了当我加载这样的 URL localhost/login/(斜杠)时,它没有加载资源。当我使用localhost/login它并加载所有图像和 CSS 文件时。有人可以帮我解决这个问题。

4

1 回答 1

0

这可能是因为您在 HTML 中使用了相对路径。在 URL 的末尾加上一个斜杠,就客户端 URL 而言,您实际上位于另一个子文件夹中。

要解决此问题,请在客户端代码中使用根相对(以斜杠开头)或绝对 URL。例如:

/img/picture.jpg

或者,如果您无法修改 URL,请base在该部分中包含一个元素,以head指示浏览器相对 URL 是相对于什么。例如,让它们相对于文档根目录:

<base href="/">

或者,通过重定向到 .htaccess 中的非斜杠 URL 或在 .htaccess 中处理它来防止尾部斜杠返回有效文档index.php

于 2014-05-10T10:54:03.023 回答