2011-03-16 41 views
2



我想根据所选国家/地区显示网址,因此我使用htaccess根据所选国家/地区重定向网址。例如,我想要的网址是这样的:www.example.com/us/index.html使用htaccess时不适用样式

我有我的文件,如下面

public_html/includes/style.css 
public_html/index.php 

中的index.php我已经链接的样式表,如“../includes/style.css

当我尝试www.example.com风格应用正确。一旦用户在index.php中选择国家,url将被重定向为www.example.com/us/index.html。但是对于这个重定向页面,风格没有正确应用。

我已经跟随在.htaccess重定向页面状态,

RewriteRule ^([^/]+)/([^\.]+)\.html$ index.php?cnt=$1 [L] 

感谢。

回答

1


感谢您的帮助。这是我用来解决这个问题的代码:

$base = $_SERVER['REQUEST_URI']; 
$base=parse_url($base); 
$parts=explode("/",$base['path']); 
$path=$parts[1]; 
$home="/".$path; 

<link rel='stylesheet' type='text/css' href='$home/includes/style.css'/> 

但是它的工作对我来说,只有当我在本地主机上运行,​​是因为我把下home/localhost/example/
我的文件,但是当我把它放在服务器上,我再次面临风格问题。所以我只是改变了HOME变量是这样的:

$home=""; 

所以现在的路径变得,

/includes/style.css 

代替

//includes/style.css 
1

如果你包括相对路径的CSS文件你的CSS将返回404,当你的URL超出了最初的主目录移动(或似乎迁出,使用的.htaccess时)

解决这一是使用绝对路径,包括你的CSS

,而不是../includes/style.css

使用<?php echo $webroot; ?>/includes/style.css

$webroot这里其事的根目录的完整路径,当你项目

+0

感谢。我使用了相同的,在标题中我有一个变量$ home,其中包含$ home =“../”之类的路径。同时链接我使用的样式表像href =“<?php echo”$ home.includes/style.css“;?>”。这是对的吗? – VKGS 2011-03-16 05:36:46

+0

nope。 $ home仍然是相对路径。您需要获取您的域的基本网址。如果您使用的是虚拟主机,您可以简单地使用/includes/style.css,但如果您使用的是诸如http:// localhost/project1之类的东西,那么您必须弄清楚您的webroot在index.php中的含义。你有什么样的设置? – JohnP 2011-03-16 05:44:42

+0

你是对的。为了测试目的,我把我的文件放在“localhost/projects/sample /”下。示例文件夹包含诸如includes/style.css之类的目录以及诸如index.php,.htaccess之类的文件。是否有任何具体的功能,以获得在PHP的baseurl? – VKGS 2011-03-16 05:49:40

2

访问www.example.com/us/index.html时,style.css计算出的网址显然不存在www.example.com/us/includes/style.css。

因此,根据一个什么样的打算是,无论是

  • 使用绝对链接的样式表,如“/includes/style.css”
  • 创建htaccess的重写规则修正网址
  • 创建每个国家
1

1个样式表应该是/includes/style.css,不../includes/style.css,仅此而已。
始终使用绝对路径。