我试图在这里找到一些例子,但它们都不适合我..我是一个和R.E一起工作的新手。
我需要一些帮助.htacess>重写规则。我怎么能做到这一点?
www.mysite.pt/folder/?a=home&id=22 -> www.mysite.pt/folder/index.php?lang=pt&a=home&id=22
www.mysite.pt/folder/en/?a=home&id=22 -> www.mysite.pt/folder/index.php?lang=en&a=home&id=22
备注:
有无“www”
?a = home& id = 22只是一个例子,我想追加
整个查询字符串。
在我发布网站之前需要'文件夹',因为我必须 在我的客户端服务器上测试它(例如www.mysite.pt/site_v2 /)。
先谢谢你的帮助,
佩德罗
答案 0 :(得分:0)
我可以主要用正则表达式帮助你。我过去做了一些htaccess干预,但不知道细节。
www.mysite.pt/folder/?a=home&id=22 => www.mysite.pt/folder/index.php?lang=pt&a=home&id=22
regex
(www\.)?mysite\.pt/folder/\?(.*)
replace with
www.mysite.pt/folder/index.php?lang=pt&$1
www.mysite.pt/folder/en/?a=home&id=22 => www.mysite.pt/folder/index.php?lang=en&a=home&id=22
regex
(www\.)?mysite\.pt/folder/en/\?(.*)
replace with
www.mysite.pt/folder/index.php?lang=en&$1
我记得你指定重写规则的顺序很重要,AFAIK第一个获胜。
为什么呢?可能是多个正则表达式匹配
这两个正则表达式不是这种情况,而是需要注意的事情
答案 1 :(得分:0)
您是否只支持EN和PT?
我还希望你有很多图像,CSS,文件等。你还想要那些EN和PL版本吗?无论如何,让我们暂时关注脚本。在这里,您要为/somefolder/en/
然后/somefolder/
选择URI。如果您使用的是DOCroot .htaccess
,那么您需要这样:
RewriteEngine On
RewriteBase /
RewriteRule ^(.*?)/en/$ $1/en/index.php?lang=en [L,NS,QSA]
RewriteRule ^(.*?)/$ $1/pl/index.php?lang=pt [L,NS,QSA]
在mod_rewrite documentation中查找L,NS,QSA标志。您需要NS标志来阻止子查询咬你。 QSA标志将lang
参数与查询列表的其余部分合并。
如果您需要固定文件夹,请将(.*?)
和$1
替换为固定文件夹名称。还要记住,HTML引用也需要工作。例如如果某个网页包含图片src="images/mygif.gif"
,那么这将从浏览器的角度解析为<same directory as HTML file>/images/mygif.gif
,例如/folder/en/images/mygif.gif
所以您需要找出映射这些内容的位置并添加相应的规则。