我在haccess中使用mod_rewrite制作干净的URL。工作目录为webroot/subdir
,htaccess位于subdir
我对主文件夹
的工作正常Options +FollowSymLinks
RewriteEngine On
RewriteRule ^projects/([0-9]+)$ ?action=projects&id=$1
RewriteRule ^projects ?action=projects
RewriteRule ^clients ?action=clients
RewriteRule ^admins ?action=admins
RewriteRule ^settings ?action=settings
所以这些链接就像webroot/subdir/projects
或webroot/subdir/settings
一样,并且可以正常工作。
我的问题出现在我需要添加ID的projects
行。当我点击一个类似于webroot/subdir/projects/284
的链接时,我的所有样式表和图像都会中断。我的CSS设置如下:
<link rel="stylesheet" href="resources/css/reset.css" />
<link rel="stylesheet" href="resources/css/main.css" />
<link rel="stylesheet" href="resources/css/buttonPro.css" />
有解决方法吗?我的重写规则错了吗?
答案 0 :(得分:2)
假设您的resources
文件夹也在webroot/subdir
,您需要建立链接绝对路径。当页面更改为projects/([0-9]+)
时,即使正在重写路径,您的工作目录现在也变为webroot/subdir/projects
,因此它正在尝试查找不存在的webroot/subdir/projects/resources
样式表
将/
添加到您位置的开头应该有效:
<link rel="stylesheet" href="/resources/css/reset.css" />
<link rel="stylesheet" href="/resources/css/main.css" />
<link rel="stylesheet" href="/resources/css/buttonPro.css" />
如果您的资源文件夹位于home / root目录之外,则需要指定该目录的完整路径,如下所示:
<link rel="stylesheet" href="/webroot/subdir/resources/css/reset.css" />
<link rel="stylesheet" href="/webroot/subdir/resources/css/main.css" />
<link rel="stylesheet" href="/webroot/subdir/resources/css/buttonPro.css" />