php-URL重写在末尾添加斜杠会破坏我的css链接

我正在使用Apache mod_rewrite在PHP应用程序中重写我的网址.
我的应用程序根目录中有一个login.php.
我在.htaccess文件中写了以下几行(我正在使用HTML5样板文件的htaccess):

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule  ^signin/?$ login.php
</IfModule>

在名称^ signin /?$的末尾添加斜杠破坏了此页面的所有CSS链接.

我正在使用CSS的相对链接,例如:

<link href="css/bootstrap-reset.css" rel="stylesheet">

我对URL重写和htaccess知识很陌生,因为我正在学习所有这些知识,所以我想知道为什么会发生这种行为?

解决方法:

一种方法是拥有一个新的重定向规则来删除尾部的斜杠,然后您的css / js不会成为问题:

RewriteEngine On
RewriteBase /apx/

# remove trailing slash from non-directories
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/$$1 [NE,R=302,L]

RewriteRule ^signin/?$login.php [L,NC]

但是也请考虑为CSS / JS使用绝对路径,例如

<link href="/css/style.css" rel="stylesheet">

否则,您可以在< head>页面的HTML部分:

<base href="/apx/" />
上一篇:php-.htaccess从网址中删除问号


下一篇:php-子文件夹的重写规则