example.com/en
的行为应与 example.com?lang=en
example.com/fr
的行为应与 example.com?lang=fr
example.com/XX
的行为应与 example.com?lang=XX
example.com/en/some-page.php
的行为应与 example.com/some-page.php?lang=en
我尝试过的东西失败了(但几乎就在那里):
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+([^/]+)/\?lang=([^\s&]+) [NC]
RewriteRule ^ /%2/%1? [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z]{2})/([^/]+)/?$ $2/?lang=$1 [L,QSA]
example.com/en
显示 404 not found,但 example.com/en/index.php
和 example.com/en/some-age。 php
、example.com
工作。
当它只是 example.com/en
时如何使其工作?
基本上我需要做的就是使 example.com/fr 的行为与 example.com/index.php?lang=fr 相同,这是唯一不起作用的情况(当转到 example.com/XX 时)。
最佳答案
您可以使用以下规则
RewriteEngine on
RewriteRule ^en/?$ /?lang-en [NC,L]
RewriteRule ^en/(.*?)\.php$ /$1.php?lang-en [NC,L]
关于regex - example.com/en/blabla 的行为类似于 example.com/blabla?lang=en,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42217309/