URL友好的多语言与htaccess和PHP

时间:2016-01-18 15:29:36

标签: php .htaccess

我需要使用htaccess和php创建url友好的多语言,例如:

mydomain.com/create_account.php

我需要:

英语:mydomain.com/create_account
西班牙语:mydomain.com/crear_una_cuenta
葡萄牙语:mydomain.com/criar_conta

此外,我还需要在同一个htaccess中创建更多文件:

mydomain.com/contact_us.php

我需要:

英语:mydomain.com/contact_us
西班牙语:mydomain.com/contacto
葡萄牙语:mydomain.com/contato

mydomain.com/login.php

我需要:

英语:mydomain.com/login
西班牙语:mydomain.com/login
葡萄牙语:mydomain.com/login

mydomain.com/account.php

我需要:

英语:mydomain.com/account
西班牙语:mydomain.com/cuenta
葡萄牙语:mydomain.com/conta

mydomain.com/shopping_cart.php

我需要:

英语:mydomain.com/shopping_cart
西班牙语:mydomain.com/mi_carrito
葡萄牙语:mydomain.com/carrinho_de_compras

mydomain.com/checkout.php

我需要:

英语:mydomain.com/checkout
西班牙语:mydomain.com/finalizar_compra
葡萄牙语:mydomain.com/finalizar_compra

请帮我制作htaccess文件吗?

2 个答案:

答案 0 :(得分:0)

您可以使用%{HTTP:Accept-Language}标头条件来检查浏览器语言:

RewriteBase /

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^create_account /create_account.php [L]

RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^crear_una_cuenta /create_account.php [L]

RewriteCond %{HTTP:Accept-Language} ^pt [NC]
RewriteRule ^criar_conta /create_account.php [L]

这样它会用适当的语言重写URL。您可以对其他规则使用相同的逻辑。

或者考虑到您已经为每种语言使用了不同的网址,您可以删除RewriteCond

答案 1 :(得分:0)

根据帖子中的建议,我做了它并且工作得很完美:或者考虑到你已经为每种语言使用不同的URL,你可以删除那些RewriteCond。

现在的问题是,在同一个htaccess:

这些规则正常: RewriteRule ^(.*)-ca.html /create_account.php [L] RewriteRule ^(.*)-l.html /login.php [L] RewriteRule ^(.*)-pn.html /products_new.php [L] RewriteRule ^(.*)-fp.html /featured_products.php [L]

但是当我添加这些规则显示页面未找到时: RewriteRule ^(.*)-s.html /specials.php [L] RewriteRule ^(.*)-bes.html /best_sellers.php [L]

Url示例: mydomain.com/specials-s.html找不到错误页面 mydomain.com/best-sellers-bes.html找不到错误页面

谢谢。