我有一个多语言网站,我正在尝试使用这样的假目录重写URL:
http://localhost/theSite/page.php?id=param&cat=param?lang=en,fr,es 到http://localhost/theSite/(en|fr|es)/page/param/param
.htaccess
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(fr|en|en)/(.*) $2.php?id=$1&cat=$2&lang=$3 [NL,QSA]
这解决为404错误。
任何帮助都是合情合理的。
答案 0 :(得分:4)
RewriteRule ^(en|fr|es)/(.*?)/(.*?)/(.*) $2.php?id=$3&cat=$4&lang=$1 [NC,QSA]
我想你的意思是NC
(没有案例),而不是NL
。您提到了不存在且重复$2
的捕获组。
答案 1 :(得分:2)
您的第二次捕获将捕获所有内容,直到URL结束。因此,你可能会加倍扩展或错误的目录。
虽然它不应该影响重定向,但是没有第三次捕获,那么$3
在哪里?
查看您的标题,看看它真正重定向到哪里并发回评论。