0

私はすでにこれに何時間も費やしており、助けが必要だと思います。だから私はhttp://MY_URL.lhで利用可能なローカル zend プロジェクトを持っています。

私はこのhtaccessファイルを持っています:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
# RewriteRule ^.*$ /index.php [NC,L]
RewriteRule !\.(js|ico|gif|jpg|png|css|wfs|csv)$ index.php

そして、これを書き直したい:

htttp://MY_URL.lh/en 

これに:

htttp://MY_URL.lh/?lang=en

すでにルールを追加しようとしました

RewriteRule /^([a-z]{2})$ /?lang=$1 [R]

の前に

RewriteRule ^.*$ - [NC,L]

しかし、フラグ [C] をルールに追加しても、目的の動作がまだ欠落している場合を除いて、それ以上の zend ルーティングは機能しません。

また、[R=301] フラグを試してみました。

Zend プロジェクトで htaccess の書き換えルールを作成するのが非常に難しい理由を教えていただければ幸いです。

回答ありがとうございます。

4

1 に答える 1

0

このルールを他のルールの前、つまり直後に追加してみてくださいRewriteEngine On

RewriteRule ^([a-z]{2})$ /?lang=$1 [R=301,L]

直前に追加するとRewriteRule ^.*$ - [NC,L]、すべてのリクエストの処理を停止するというこのルールが常に実行されるため、その後は何も機能しません。

編集:

リダイレクトが行うURLのアドレスを変更したくない場合は、この後もルールの処理を続行して、phpアプリケーションがlangパラメーターを取得できるようにする必要があると思います。この場合、ルールはそのままにしておきQSAますが、他のクエリ文字列パラメータが存在する場合は、両方のフラグを削除してフラグを追加します。

RewriteRule ^([a-z]{2})$ /?lang=$1 [QSA]
于 2011-12-28T16:28:46.297 に答える