我的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"。
有些帮助吗?谢谢!
答案 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
,这正是您声称要执行的操作不希望发生。
那么第二条规则是什么?去掉它!
这可能不是您的最终解决方案,因为我不知道您希望通过规则实现什么。这只是为了指出这里的问题......