将www.domain.com更改为www.domain.com/es/的重写规则是什么?

时间:2015-07-15 07:03:19

标签: .htaccess mod-rewrite url-rewriting

我的htaccess文件如下所示:

RewriteEngine On

# To add www at the beginning
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# To add / at the end
RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 

# Add /es/ at the end
RewriteCond %{REQUEST_URI} www.mydomain.com$ [NC]
RewriteRule (.*) %{REQUEST_URI}/es/ [R=301,L]

# Friendly URLs
RewriteRule ^([^/]*)/$ /?lang=$1 [L]
RewriteRule ^services/([^/]*)/$ /?services=$1 [L]
RewriteRule ^([^/]*)/services/([^/]*)/$ /?lang=$1&services=$2 [L]

# ErrorDocument 404 /web/page-404.php
# ErrorDocument 500 /web/page-500.php

我尝试尝试但我无法自动添加" / es /"当输入www.mydomain.com时。

目前," #Add / es / at the end"块正在添加" / es /?lang = es"。

有些帮助吗?谢谢!

2 个答案:

答案 0 :(得分:0)

尝试此规则:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteRule ^$ /es/ [R=301,L]

重定向

example.com

example.com/es/

答案 1 :(得分:0)

正如对问题的评论中已经提到的,这些规则组合起来没有意义:

# Add /es/ at the end
RewriteCond %{REQUEST_URI} www.mydomain.com$ [NC]
RewriteRule (.*) %{REQUEST_URI}/es/ [R=301,L]

# Friendly URLs
RewriteRule ^([^/]*)/$ /?lang=$1 [L]

它们没有意义,因为这里发生的是:第一个fule重写任何传入的...../es/请求。然后,下一条规则再次将该请求重写为.../es/?lang=es,因为第二条规则正则表达式采用es,并且追加为查询参数lang=es,这正是您声称要执行的操作不希望发生。

那么第二条规则是什么?去掉它!

这可能不是您的最终解决方案,因为我不知道您希望通过规则实现什么。这只是为了指出这里的问题......