资源的位置,无论网址如何(.htaccess url重写)

时间:2014-10-27 12:19:04

标签: php html .htaccess

我最近开始使用.htaccess url重写,目前我遇到了一个问题。

我的文件夹架构是这样的:

  • 的index.php
  • 的.htaccess
  • 图像/
  • CSS /
  • JS​​ /
  • 功能/

我的网站通过

加载所有页面
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的网络服务器上发布。

如果您需要有关我的实施的更多信息,我现在无法想到,我将分享它。

2 个答案:

答案 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)

有两种方法可以解决此问题:

  1. 在css,js,images文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以http://或斜杠/开头。

  2. 您还可以尝试在页面的HTML标题中添加此标题:<base href="/" />,以便从该网址解析每个相对网址,而不是当前网址。