我想解决下一个问题:
1)输入没有语言的网址时,默认使用英语 例如:
http // localhost / plants /或http // localhost / plants
或
HTTP //本地主机/植物/店铺/配件
2)输入带语言的网址时,将该参数作为要使用的语言传递 例如:
http // localhost / plants / es / shop / accessories
或
http // localhost / plants / es /或http // localhost / plants / es
到目前为止,我已经尝试过:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(en|es)/(.*)$ index.php?url=$2&lang=$1 [L,QSA]
RewriteRule ^(.*)$ index.php?url=$1&lang=en [L,QSA]
如果我评论第一个RewriteRule并输入任何url它工作正常但总是使用en语言。
如果我评论第二个RewriteRule,我使用的语言为:
http // localhost / plants / es /
或
http // localhost / plants / es / shop / accessories
它工作正常,但没有给出默认语言为英语。
当我离开这两条规则时,知道为什么它不起作用?
由于
Ps:我已经删除了:在http
之后答案 0 :(得分:2)
如果plants
是您的文档根目录,那么您应该可以使用此规则。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]
RewriteCond %{REQUEST_URI} !/(en|es)
RewriteRule ^(.*)/?$ index.php?url=$1&lang=en [L,QSA]
RewriteRule ^(en|es)/?(.*)/?$ index.php?url=$2&lang=$1 [L,QSA]
让我知道它对你有用。
答案 1 :(得分:1)
将以下htaccess文件放在RewriteEngine On
RewriteBase /plants
RewriteCond %{REQUEST_URI} !^/plants/e[ns](/|$) [NC]
RewriteCond %{QUERY_STRING} !lang=e[ns] [NC]
RewriteRule ^.*$ /plants/en/$0 [R=301,L]
RewriteRule ^(e[ns])/(.*)$ index.php?url=$2&lang=$1 [NC,L,QSA]
目录中:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]
RewriteRule ^(en|es)/(.*)$ index.php?url=$2&lang=$1 [L,QSA]
RewriteRule ^(.*)$ index.php?url=$1&lang=en [L,QSA]
如果上述情况仍然无效,请将您自己的方法更新为:
http://localhost:8000/auth/login#_=_
答案 2 :(得分:1)
找到了解决方案:
RewriteEngine On
RewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{REQUEST_FILENAME}!-l
RewriteRule ^(en | es)/(。*)$ index.php?url = $ 2& lang = $ 1 [L,QSA]
RewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{REQUEST_FILENAME}!-l
RewriteRule ^(。*)$ index.php?url = $ 1& lang = en [L,QSA]
我该如何改进?感觉不对,我必须写两次相同的Cond