我正在使用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/" />