感谢@Ω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/.../somepage
to的形式重写任何内容domain/sub/.../somepage.php?lang=language
。第一个块用于 url 形式的 url domain/language/
,带或不带结尾/
,重定向到index.php
.
这非常有效,但仍然存在两个小故障,它们是:
无论如何,第二块中的第三行(我#commented)就是不匹配。奇怪的是它确实在第 4 行工作,即我的页面实际上显示正常。这是否意味着
-f
这里的参数错误?如果我输入任何以 a 结尾的 url
/
(仅第二个块,它确实与索引文件一起使用),我的重写被破坏,即输出为有没有办法用正则表达式排除输入的 url 中的潜力?domain/language/sub/.../somepage/.php
/
感谢您的反馈意见 !