【发布时间】:2012-09-11 03:47:40
【问题描述】:
感谢@Ωmega,我几乎完全解决了我以前的问题(详情在这里.htaccess regular expression issue)并得出了这个解决方案:
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 形式的任何内容重写为domain/sub/.../somepage.php?lang=language。第一个块是domain/language/ 形式的url,有或没有结尾/ 被重定向到index.php。
这工作得很好,但仍然存在两个小故障:
无论如何,第二块中的第 3 行(我#commented)就是不匹配。奇怪的是它确实在第 4 行工作,即我的页面实际上显示正常。这是否意味着
-f参数在这里是错误的?
1234563 987654331@ 在带有正则表达式的输入 url 中?
感谢您的反馈!
【问题讨论】:
标签: regex .htaccess mod-rewrite url-rewriting