1

我正在开发一个多语言网站,但在重写 URL 时遇到了一些麻烦。

我必须有这样的东西:

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”获取回溯。

4

1 回答 1

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]

让我知道它是否有效,那么我也可以建议其他规则。

于 2013-11-01T13:19:52.067 回答