感谢@Ωmega,我几乎完全解决了我以前的问题(这里有详细信息.htaccess 正则表达式问题)并得出了这个解决方案:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^(.*/|)(en|de|fr)(/|)$ [NC]
RewriteCond %1%3index.php -f
RewriteRule ^(.*/|)(en|de|fr)(/|)$ index.php?lang=$2 [NC,QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^(.*/|)(en|de|fr)(/.*|)$ [NC]
#RewriteCond $1$3.php -f
RewriteRule ^(.*/|)(en|de|fr)(/.*|)$ $1$3.php?lang=$2 [NC,QSA,L]
基本上,这些行将以domain/language/sub/.../somepageto的形式重写任何内容domain/sub/.../somepage.php?lang=language。第一个块用于 url 形式的 url domain/language/,带或不带结尾/,重定向到index.php.
这非常有效,但仍然存在两个小故障,它们是:
无论如何,第二块中的第三行(我#commented)就是不匹配。奇怪的是它确实在第 4 行工作,即我的页面实际上显示正常。这是否意味着
-f这里的参数错误?如果我输入任何以 a 结尾的 url
/(仅第二个块,它确实与索引文件一起使用),我的重写被破坏,即输出为有没有办法用正则表达式排除输入的 url 中的潜力?domain/language/sub/.../somepage/.php/
感谢您的反馈意见 !