我在我的网站上创建了一个语言脚本。此脚本识别URL中的语言并加载语言定义。
例如:
RewriteRule ^(.+)/about/?$ sobre2.php?lang=$1 <-- working fine
RewriteRule ^(.+)/contact/?$ contato2.php?lang=$1 <-- working fine
RewriteRule ^(.+)/products/?$ produtos2.php?lang=$1 <-- working fine
RewriteRule ^(.+)/contact/sales/?$ contato-vendas2.php?lang=$1 <-- working fine
RewriteRule ^(.+)/contact/general/?$ contato-form2.php?lang=$1 <-- working fine
分别访问上面的页面:
https://domain.com/b2b/pt-br/about/
https://domain.com/b2b/pt-br/contact/
https://domain.com/b2b/pt-br/products/
https://domain.com/b2b/pt-br/contact/sales/
https://domain.com/b2b/pt-br/contact/general/
这在除索引之外的所有页面中都能正常工作。
当我尝试使用索引页面执行相同操作时,使用以下代码:
RewriteRule ^(.+)/?$ index2.php?lang=$1
除了它不起作用外,它还会影响所有其他页面(和资源),因此不会加载资源,页面看起来像纯粹的html&#34;。
我想知道如何配置htaccess来制作我的&#34; index2.php&#34;可以这样访问:
https://domain.com/b2b/pt-br/
谢谢。
答案 0 :(得分:1)
.+
将匹配任何字符中的一个或多个,如果您将规则放在其他规则之前,那么这将使其他规则无效。
您可以使用以下规则:
RewriteEngine On
RewriteBase /b2b/
RewriteRule ^((?!pt-br/).*)$ pt-br/$1 [L,R=301,NC]
RewriteRule ^(.+)/about/?$ sobre2.php?lang=$1 [L,QSA]
RewriteRule ^(.+)/contact/?$ contato2.php?lang=$1 [L,QSA]
RewriteRule ^(.+)/products/?$ produtos2.php?lang=$1 [L,QSA]
RewriteRule ^(.+)/contact/sales/?$ contato-vendas2.php?lang=$1 [L,QSA]
RewriteRule ^(.+)/contact/general/?$ contato-form2.php?lang=$1 [L,QSA]
RewriteRule ^([a-z]{2}-[a-z]{2})/?$ index2.php?lang=$1 [NC,L,QSA]