Php 重写规则更改文件的物理路径
假设我的网站的域名是[http://mywebsite.com][1] 这将打开index.php。该脚本从url获取$page、$section、$language变量。所以[http://mywebsite.com/index.php?lang=en§ion=home&page=sitemap][2] 以英语打开网站地图页面,该页面属于“主页”部分。我希望相同的url被重写到[http://mywebsite.com/home/sitemap_en.html][3]. 为了实现这一点,我已经在.htaccess中添加了以下内容:Php 重写规则更改文件的物理路径,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,假设我的网站的域名是[http://mywebsite.com][1] 这将打开index.php。该脚本从url获取$page、$section、$language变量。所以[http://mywebsite.com/index.php?lang=en§ion=home&page=sitemap][2] 以英语打开网站地图页面,该页面属于“主页”部分。我希望相同的url被重写到[http://mywebsite.com/home/sitemap_en.html][3]. 为了实现这一点
RewriteCond%{REQUEST\u URI}.+\/+
重写规则^(+)\/(++)\.html$index.php?lang=$3§ion=$1&page=$2[L]
但现在有一个巨大的问题。当我访问这样的url时,找不到文件,因为文件style.css位于根文件夹中,而不是[http://mywebsite.com/home/style.css][4] ,服务器正在那里搜索它。“home”不是真正的文件夹,也不存在,它只是一个部分。所有的jpg、png、js、gif等等都是一样的。我怎样才能以我喜欢的方式重定向页面,以及找到具有真实路径的文件
p、 美国的一些部门喜欢[http://mywebsite.com/index.php?lang=en§ion=contact][5] 根本没有页面。他们应该这样接触:[http://mywebsite.com/contact_en.html][6]
在上一条规则之后,我为他们准备了这个:RewriteRule^(+)(mk | en | al).html$index.php?lang=$2§ion=$1您是否尝试过通过斜杠前缀,相对于顶级目录(主目录)引用css和js文件等?ie如果您将它们保存在站点主目录中名为styles的目录中:
<link rel=StyleSheet href="/styles/style.css" type="text/css" />
您可以在标题中使用标记,以便所有相对路径都不在特定的href中,因此:
<head>
<base href="http://mywebsite.com/" />
</head>
将导致所有相对的(而不仅仅是css)URL从根目录中加载
或
正如其他人所说,只需在前面加一个前导“/”即可使您的路径绝对化:
<link rel="stylesheet" href="/css/mycss.css" type="text/css" />
嘿,我简直不敢相信这是多么明显:)我所有的src和href都像href=“images/design/favicon.ico”,当我把斜杠放在href=“/images/design/favicon.ico”前面时,它们加载得很好,DUH:)非常感谢兄弟。我想这会解决我所有的问题,希望新的不会发生。非常感谢这个答案,我甚至不知道基本标签的存在。现在,我不必编辑所有的HREF,它们非常多:)