我需要使用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文件吗?
答案 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找不到错误页面
谢谢。