我最近开始使用.htaccess url重写,目前我遇到了一个问题。
我的文件夹架构是这样的:
我的网站通过
加载所有页面index.php?page=register
我的页面位于功能图中。
问题是当我把它放在我的.htaccess
中时RewriteEngine On # Turn on the rewriting engine
RewriteRule ^register/?$ index.php?page=register [NC,L] # Handle login page request
RewriteRule ^profile/([0-9]+)/?$ index.php?page=profile&member_id=$1 [NC,L] # Handle profile page request
当我导航到
时<website>/register/
我的CSS文件位于
../css/style.css
但是当我导航到
时<website>/profile/1/
我的css文件位于
../../css/custom.css
如何确保页面始终从
加载我的文件css/custom.css
是否有可能提到index.php位置的变量?所以我可以做到
<link rel="stylesheet" type="text/css" href="<?= $variable ?>/css/custom.css" />
我在Windows上使用XAMPP(最新版本),该网站将在基于Linux的网络服务器上发布。
如果您需要有关我的实施的更多信息,我现在无法想到,我将分享它。
答案 0 :(得分:1)
如果您的网站位于基础网站上,例如http://example.com/
然后只做
<link rel="stylesheet" type="text/css" href="/css/custom.css" />
如果它位于http://example.com/mysite/
之类的子目录中,则必须将其添加到路径中
<link rel="stylesheet" type="text/css" href="/mysite/css/custom.css" />
您应该将以下内容添加到.htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
如果文件存在,这将“忽略”重写规则,以便加载你的css。
答案 1 :(得分:1)
有两种方法可以解决此问题:
在css,js,images文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以http://
或斜杠/
开头。
您还可以尝试在页面的HTML标题中添加此标题:<base href="/" />
,以便从该网址解析每个相对网址,而不是当前网址。