我想知道是否有人可以提供帮助?基本上我有一套mod_rewrite规则,它们都运行良好,除非我在URL的末尾加上一个斜杠,它变得很疯狂。仍然显示页面(有时),除了所有的CSS,JS等都不包含在内,因为当有一个尾随斜杠时路径会混乱。解决它的唯一方法是放置一个BASE标签,我真的想避免它,因为它带来了它自己的一系列问题。我的htaccess有问题吗?我只需要忽略尾随斜杠。
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^resetpassword/([^/.]+)/?$ resetPassword.php?resetCode=$1 [L]
RewriteRule ^activate/([^/.]+)/?$ activateAccount.php?ACTCode=$1 [L]
RewriteRule ^dashboard/?$ dashboard.php [NC,L]
RewriteRule ^login/?$ login.php [NC,L]
RewriteRule ^register/?$ register.php [NC,L]
RewriteRule ^messages/inbox/??$ messagesInbox.php [NC,L]
RewriteRule ^messages/archive/??$ messagesArchive.php [NC,L]
RewriteRule ^messages/??$ messagesInbox.php [NC,L]
答案 0 :(得分:1)
可能没有很好的解决方法,因为在任何情况下你都会切换“目录”级别(比如messages/inbox
)。
最常见的解决方案是使用绝对路径来引用CSS,图像等:
<link rel="stylesheet" href="/css/styles.css">
或者有一个包含web root的PHP变量:
<link rel="stylesheet" href="<? echo $webroot; ?>/css/styles.css">
这两种方法都比使用base
标签或做一些基于.htaccess的重定向恶作剧要好得多。