http://example.com/index.php?lang=en&page=main
应该看起来像http://example.com/en/main
我已经阅读了很多关于htaccess,mod_rewrite,BasePath等的内容。 我尝试了很多种组合,但总有一种情况不起作用。
主要是CSS未加载(错误的路径:/en/style.css
)或旧的格式化链接不再起作用。
我目前的结构:
/incl
|incl1.php
|incl2.php
/img
|img1.png
|img2.png
index.php
style.css
我当前的.htaccess:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/([^/]*)$ /index.php?lang=$1&page=$2 [L,NC]
我当前的网站:
<link href="style.css" rel="stylesheet" type="text/css" />
<base href="http://example.com/">
...
<img src="img/img1.png" />
...
<?php include('incl/incl1.php'); ?>
我目前的CSS:
background-image: url(img/img2.png);
编辑:什么'无法正常工作
找不到CSS和favicon。可能是因为假设它们是/en/style.css
的正确组合
的.htaccess
RewriteBase
(我需要吗?尝试后我没有得到更好的结果)RewriteCond
RewriteRule
网站
<base href="http://example.com/">
或 <base href="/">
?src="style.css"
或 src="/style.cs"
?<?php include('incl/incl1.php'); ?>
或 <?php include('/incl/incl1.php'); ?>
?CSS
background-image: url(img/img2.png);
或 background-image: url(/img/img2.png);
?我应该将所有图片和CSS放在/static
子文件夹中吗?我该如何使用?
非常感谢你!
答案 0 :(得分:0)
首先,您需要了解重写规则无法修复php include
,因为这种情况发生在PHP内部,并且控件甚至没有回到PHP。
现在修复css/js/images
最佳选择是使用绝对链接。如果出于某种原因,您可以尝试在页面的标题中添加:<base href="/" />
。
然而,还有mod_rewrie
方法来修复这些规则。
Options +FollowSymLinks
RewriteEngine On
# fix css/js/images link
RewriteRule ^[a-z]{2}/(.+?\.(?:jpe?g|gif|bmp|png|tiff|css|js))$ /$1 [L,NC,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/([^/]*)$ /index.php?lang=$1&page=$2 [L,NC,QSA]