我正在开发一个多语言网站,我在重写网址方面遇到了一些麻烦。
我必须有这样的事情:
1) mysite.com/en
2) mysite.com/en/product-one
3) mysite.com/en/product-one/id25/title-page-fake.html
4) mysite.com/en/login.php
网址重定向到:
1) mysite.com/index.php
2) mysite.com/index.php
3) mysite.com/item.php?id=25
4) mysite.com/login.php
我的.htaccess文件目前看起来像这样:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.+/{0,0})$ $1/index.php [NC]
RewriteRule ^([a-z0-9\-]+/)(.*)$ $2 [NC]
RewriteRule ^id(\d+)\/.*$ item.php?id=$1&%{QUERY_STRING} [L]
有效,但会抛出异常:
由于可能的配置错误,请求超出了10个内部重定向的限制。如有必要,使用'LimitInternalRecursion'增加限制。使用“LogLevel debug”获取回溯。
答案 0 :(得分:1)
好的尝试这条规则:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# requirements 1 & 2
RewriteRule ^en(/product-one)?/?$ /index.php [L,NC]
# requirement # 3
RewriteRule ^en/product-one/id([0-9]+) /item.php?id=$1 [L,NC,QSA]
# requirement # 4
RewriteRule ^en/([^.]+\.php)$ /$1 [L,NC]
让我知道如果它有用,那么我也可以建议其他规则。