我需要将http://site.com/language/arg1/arg2
重定向到http://site.com/language/mainpage/explore/arg1/arg2
我对.htaccess没有太大的经验,所以我遇到了问题。
RewriteEngine On
RewriteCond %{HTTP_HOST} site.com$ [NC]
RewriteCond %{HTTP_HOST} !mainpage$
RewriteRule ^(.*)$ http://site.com/???/mainpage/explore/$1 [R=301,L]
第一个问题:结果是许多重定向(310 ERR_TOO_MANY_REDIRECTS)。我想,RewriteCond %{HTTP_HOST} !mainpage$
中的错误?
第二个问题:“语言”部分可能有多种变体(“ru”,“en”等)。我必须写什么而不是“???”在第四行?
答案 0 :(得分:1)
未经测试,但这应该是您要搜索的内容:
RewriteEngine On
RewriteCond %{HTTP_HOST} site.com$ [NC]
RewriteCond %{REQUEST_URI} !/mainpage/
RewriteRule ^([A-Za-z]+)/(.*)$ http://site.com/$1/mainpage/explore/$2 [R=301,L]
{HTTP_HOST}
更改为{REQUEST_URI}
(mainpage
不在您的主机名中)$
(mainpage
不在您的uri结尾处)([A-Za-z]+)
注意:您的代码仅适用于site.com
,而不适用于www.site.com
答案 1 :(得分:1)
您可以通过routes.php
中的CI路由也像
$route['language/(:any)/(:any)'] = "language/mainpage/explore/$1/$2";
在.htaccess
RewriteEngine on
RewriteRule ^language/([^//]+)/([^//]+)$ language/mainpage/explore/$1/$2 [QSA,L]