2

URL 書き換えを作成するのに問題があります。を使用しているローカル サーバーではnginx、すべてが順調に進んでいます。しかし、それを で動作させようとするとすぐにapachehtacces気が狂ってしまいます。

私のURLは次のようになっています:

http://example.com/controller/action/param1/value1/param2/value2

以下はhtaccess、前のケースの動作です。

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{REQUEST_URI} !^/(images|css|js)/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ index.php?$1 [L]
</IfModule>

ただし、場合によっては、Facebook 認証などの追加のパラメーターがあります。

http://example.com/controller/action?hauth.start=Facebook&hauth.time=1382665465

このケースは、以前の では機能しませんhtaccess。GET 変数には何も入っていません。どうすればこれを修正できますか?

4

1 に答える 1

2

QSAルールで (Query String Append) フラグを使用する

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{REQUEST_URI} !^/(images|css|js)/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ index.php?$1 [L,QSA]
</IfModule>

QSAflag は、新しいクエリ パラメータを追加する際に、既存のクエリ文字列を確実に保持します。

于 2013-10-24T16:31:09.257 に答える