不承认我的css,js等

时间:2010-10-08 07:11:33

标签: css .htaccess styles mod-rewrite wamp

我有.htacces喜欢:

RewriteEngine On
RewriteRule ^en/$             index.php?page=index&lang_id=2
RewriteRule ^contact.html$    index.php?page=contact
RewriteRule ^en/contact.html$ index.php?page=contact&lang_id=2
# ...[and so on]

在我的网站中,我有一个切换语言按钮(图像)。我的基本语言是Ro,我想把它转换成En。所以,重点是在真实的服务器上,切换器工作。在我的本地服务器上,wamp,当我尝试切换语言时,在我的浏览器中显示翻译的文本(因为它们存储在我的数据库中),但是它不识别css样式,图像......它出现只有文字。

问题出在哪里?请帮帮我。

4 个答案:

答案 0 :(得分:1)

您是否使用外部资源的绝对或相对URL? 问题可能是预先设置的额外文件夹打破了你的相对网址。

因此,假设您使用的是名为logo.png的图像并托管在图像文件夹中,并使用图片标记<img src="images/logo.png" alt="logo" />进行引用。通常情况下,如果您在contact.html页面上,浏览器会检查位置http://localhost/images/logo.png,但是在您的/en文件夹中,浏览器会检查http://localhost/en/logo.png哪个不存在

解决此问题的方法是使用绝对网址,因此使用

<img src="http://localhost/images/logo.png" alt="logo" />

应该解决你的问题。

答案 1 :(得分:0)

您可能有一些规则,例如RewriteRule ^en/(.*)$ index.php?page=$1

要进行调试,请使用Firefox的HttpFox扩展名,查看服务器返回的文件,以及是否为200 OK响应。

答案 2 :(得分:0)

您的浏览器可以请求en / style.css,这会被第一个规则重定向到index.php?page = index&amp; lang_id = 2换句话说,它永远不会找到那样的css。

添加

RewriteRule (css|jpg|png|gif|js|swf)$ - [L]

RewriteEngine On之后。

这确保如果扩展名是上述之一,则不会重定向。

修改

好吧说你的亲戚链接说css / style.css 这会自动转换为baseURL + link 因为baseURL将是http://www.example.com/en/,它将在文件夹en / css / style.css中查找css而不是css / style.css

一种解决方法是始终从你的样式文件夹中获取css,从图像文件夹中获取图像,从javascript文件夹中获取javascript等。

示例:

RewriteCond ([^/]+css)$ style/$1 [L]
RewriteCond ([^/]+(jpg|png|gif))$ images/$1 [L]
RewriteCond ([^/]+(js))$ javascript/$1 [L]
etc.

答案 3 :(得分:0)

我遇到了同样的问题:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/([style|css|js|javascript|images|img|fonts|swf]+)/(.+)\.([^.]+)$ public/$2/$3.$4 [L]

只要所有文件都在目录或子目录中:style,css,js,javascript,images,img,fonts或swf就可以了

将public更改为root中的文件夹,$ 2是文件夹css,js ... etc $ 3是路径的其余部分