0

にリダイレクト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$でしょうか?

2 番目の問題: セクション「language」には、いくつかのバリエーション (「ru」、「en」など) が含まれる場合があります。「???」の代わりに書くべきこと 4行目に?

4

2 に答える 2

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}( mainpageis not in your hostname) に変更します
  • $2 番目の条件から を削除します (mainpageは uri の最後ではありません)。
  • 2 つのキャッチング グループを使用します。1 つは言語用、もう 1 つは引数用です。
  • 言語を制限する: を含む 1 つ以上の文字のみを許可する([A-Za-z]+)

site.com注:あなたのコードは、ではなく、でのみ機能しますwww.site.com

于 2013-07-10T15:34:03.203 に答える
1

CIルーティングでこれを行うこともできroutes.phpます

$route['language/(:any)/(:any)']    = "language/mainpage/explore/$1/$2";

.htaccess で

RewriteEngine on
RewriteRule ^language/([^//]+)/([^//]+)$ language/mainpage/explore/$1/$2 [QSA,L]
于 2013-07-10T15:39:33.257 に答える