2013-10-29 49 views
1

我想在我的php网站上添加一个'简单'可翻译的框架。我有法语和英语,未来可能会更多。双向URL rewrting

我可以很容易地从的.htaccess重定向到一个不同的语言,这些规则:

RewriteRule ^Abonnement$ php/vigneron/inscription.php?la=fr [L,QSA] 
RewriteRule ^Register$ php/vigneron/inscription.php?la=en [L,QSA] 

我的问题是:如果我不希望建立在PHP连接Abonnement阵列(法语页面)注册(简单:)英文页面),我必须在我的语言选择框中输入丑陋的URL:php/vigneron/inscription.php?la = XX,并且该URL在浏览器的地址栏中可见

所以我的问题是:有没有办法在.htaccess链接php/vigneron/inscription.php?la = en到Register? 我错过了我的.htaccess文件中的内容吗? 我的恐惧是从干净的URL到真实的路径文件进行无限循环。

第二个问题非常接近第一个问题:页面仍然可以使用长URL:php/vigneron/inscription.php?la = en,是否有办法阻止这种情况并通过.htaccess强制浏览器显示干净网址?

感谢您的意见和评论!

回答

1

So my question is : is there a way in .htaccess to link php/vigneron/inscription.php?la=en to Register ?

是肯定是可以做到的。为此目的使用这些规则:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+php/vigneron/inscription\.php\?la=en[&\s] [NC] 
RewriteRule^/register? [R=301,L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+php/vigneron/inscription\.php\?la=fr[&\s] [NC] 
RewriteRule^/Abonnement? [R=301,L] 
+0

我真的不知道如何感谢你,除非说你是.htaccess杀手!试图理解这个规则的逻辑:它是否意味着“[&s]”会通过所有其他的aguments,并且“^ [A-Z] {3,} \ s /”处理www + domaine的名字? – hugsbrugs

+0

不客气。 '[A-Z] {3,}'表示ex的请求方法。 GET,POST,PUT等等,'[&\ s]'会匹配一个空格或'&'。这意味着参数'la = en'是最后一个参数或者后面有更多参数。 – anubhava