RewriteRule改变文件的物理路径


RewriteRule changes physical paths for files

假设我的网站域名是[http://mywebsite.com][1],打开index.php。该脚本从url获取$page、$section、$language变量。因此[http://mywebsite.com/index.php?lang=en&section=home&page=sitemap][2]打开了属于"首页"部分的英文站点地图页面。我希望将相同的url重写为[http://mywebsite.com/home/sitemap_en.html][3]。为了实现这一点,我已经在。htaccess中放入了以下内容:RewriteCond %{REQUEST_URI} .+'/.+ RewriteRule ^(.+)'/(.+)_(mk|en|al)'.html$ index.php?lang=$3&section=$1&page=$2 [L]但现在有一个大问题。当我访问这样的url时,文件没有找到,因为文件style.css在根文件夹中,而不是在[http://mywebsite.com/home/style.css][4]中,服务器正在搜索它。"home"不是真正的文件夹,它不存在,它只是一个部分。同样适用于所有jpg, png, js, gif等。我如何以我喜欢的方式重定向页面,以及使用实际路径找到的文件?

注。有些部分,如[http://mywebsite.com/index.php?lang=en&section=contact][5]根本没有页面。他们应该像这样到达:[http://mywebsite.com/contact_en.html][6]在前面的规则之后,我为他们准备了这个:RewriteRule ^(.+)_(mk|en|al).html$ index.php?lang=$2&section=$1

你可以在标题中使用一个基本标签,这样所有的相对路径都不在一个特定的href:

<head>
    <base href="http://mywebsite.com/" />
</head>

将导致所有相对(不仅仅是css) URL从根目录

加载。

就像其他人所说的那样,只要在前面加一个"/"就可以使你的路径绝对化:

<link rel="stylesheet" href="/css/mycss.css" type="text/css" />

您是否尝试通过使用斜杠前缀来相对于顶级目录(主目录)引用css和js文件等?例如,如果你把它们保存在网站主目录的styles目录中:

<link rel=StyleSheet href="/styles/style.css" type="text/css" />