.htaccess将no-parameter重定向到default-parameter

时间:2014-01-21 19:17:07

标签: .htaccess mod-rewrite redirect

我正在为语言指示清除网址目的使用以下重写规则。

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/

2 个答案:

答案 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]