![](/img/trans.png)
[英]How can I change my multilingual urls from this example.com/index.php?lang=en to this example.com/en/?
[英]Not needing index.php from example.com/{lang}/index.php
我的 .htaccess 目前看起来像:
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+([^/]+)/\?lang=([^\s&]+) [NC]
RewriteRule ^ /%2/%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z]{2})/([^/]+)/?$ $2/?lang=$1 [L,QSA]
这意味着example.com/{lang}/some-page.php
充当example.com/some-page.php?lang={lang}
剩下的问题: example.com/{lang}
不起作用,除非它有index.php
像 `example.com/{lang}/index.php
当我们直接访问example.com/{lang}
时,如何使其工作?
这个怎么样:
RewriteEngine On
RewriteCond %{ENV:REDIRECT_rewritten} !=1
RewriteCond %{QUERY_STRING} ^lang=([a-z]{2})$ [NC]
RewriteRule ^([^/]*)$ /%1/$1? [R=301,L]
RewriteCond %{REQUEST_URI} !^/js/
RewriteRule ^([a-z]{2})(?:/([^/]+))?$ $2?lang=$1 [NC,L,QSA,E=rewritten:1]
我真的不喜欢在 THE_REQUEST 上匹配所以改变了它。 这也仅重定向了您可能不想要的/?lang=xx
。 我在您可能不想要的两个规则中对 lang 字符串使用了相同的匹配。 让我知道。
不确定您是否需要检查文件或目录是否存在,如果没有必要,它会减慢速度,因为每次请求都必须轮询文件系统两次。 根目录下是否有两个字母文件或目录?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.