1

次のことを行う .htacces ファイルを作成しました。

  • にリダイレクト//.index/ます (アドレスバーに表示されます)

    また

  • /huor/en/.index/huorにリダイレクト/.index/enします (アドレスバーに表示されます)

それで

  • /.[p]/[l]リクエストを次のようにリダイレクトします/index.php?page=[p]&lang=[l](アドレスバーには表示されません)

しかし..

最後にクエリ文字列を保持したいのですが、これは/.[p]/[l]?a=b結果を訪問することを意味します/index.php?page=[p]&lang=[l]&a=b

これで正規表現が機能するようには見えません。.htaccess ファイル全体は次のとおりです。

RewriteEngine On
RewriteBase /Main/djdavid98/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(hu|en)?(\/?(\?(([\S]+\=[\S]+)*))?)?$ ./.index/$1$3 [R=301,L]
RewriteRule ^\.([\w\d]+)(\/(hu|en))?\/?(\?(([\S]*=[\S]*)+))?$ index.php?page=$1&lang=$3&$5
4

1 に答える 1

1

QSAルールのターゲットで作成したクエリ文字列の末尾に、既に存在するクエリ文字列を追加するフラグをRewriteRule使用します。

RewriteRule ^\.([\w\d]+)(\/(hu|en))?\/?(\?(([\S]*=[\S]*)+))?$ index.php?page=$1&lang=$3&$5 [L,QSA]

ルールのターゲットで独自に作成した場合を除き、クエリ文字列は自動的に末尾に追加されることに注意してください。そのため、最初のルールではクエリ文字列が保持されますが、2 番目のルールでは保持されません。

于 2013-07-10T23:16:44.767 に答える