我有.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样式,图像......它出现只有文字。
问题出在哪里?请帮帮我。
答案 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是路径的其余部分