我正在为语言指示和清除网址目的使用以下重写规则。
RewriteEngine On
RewriteRule ^([a-zA-Z0-9\-]+)$/([a-zA-Z0-9\-]+)$ index.php?lang=$1&page=$2 [L]
如果没有给出语言参数,网站将无法正确显示。因此,当用户请求 www.mydomain.com/products 而不是 www.mydomain.com/en/products 时,该网站将成为商城功能。
解决方案是.htaccess配置,默认情况下,当没有给出语言参数时,会将用户重定向到 www.mydomain.com/en (例如 www.mydomain.com < / em>的)。当用户请求 www.mydomain.com / 时,如何执行外部.htaccess重定向到 www.mydomain.com/en/ ?
答案 0 :(得分:1)
RewriteEngine on
RewriteBase /
# lang & page
RewriteRule ^([a-z]{2})/([a-zA-Z0-9-]+)$ index.php?lang=$1&page=$2 [L]
# Only lang
RewriteRule ^([a-z]{2})$ index.php?lang=$1 [L]
# no lang -> default "en" lang
RewriteRule ^$ en [R=301,L]
这样,你必须在php中检查lang。
或者您可以在htaccess中使用(en|fr|es)
代替([a-z]{2})
答案 1 :(得分:0)
你的规则中有错误的正则表达式,试试这个:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/?$ index.php?lang=$1&page=$2 [L,QSA]