0

私のプロジェクトにはさまざまなWebサイトに関するデータがあるため、.htaccessを使用してURLを書き直し、誰かがドット(。)を含む名前を私のWebサイトに渡すと、site.phpページが表示されるようにしました。これがそのための私のコードです:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9\_\-]+(\.)[a-zA-Z0-9\_\.\-]+)/?$ site.php?url=$1
RewriteRule contact$ contact.php

これにより、サイト名がパラメーターとしてsite.phpに送信されます。ここで、もう1つのパラメーターを渡す必要があります。たとえば、一般的に渡される可能性があるようなものです。サイトにリアルタイムで更新されたデータを取得させたいのですが?update=true、データベースから取得するのではなく、インターネットからデータを更新するように渡したいのです。しかし、このようなパラメータを渡す

http://www.mysite.com/anysite.com?update=true

が機能していません。既存の書き換えられたURLに追加のパラメータを渡すにはどうすればよいですか?

4

1 に答える 1

2

[QSA]フラグ(「クエリ文字列の追加」)は、受信したクエリ文字列を書き換えられたURLに追加します。また[L]、最初のルールとの一致を防ぐためのベストプラクティスとしてフラグを追加しました。これは、チェーンの後半で追加のルールと一致する場合もあります。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9\_\-]+(\.)[a-zA-Z0-9\_\.\-]+)/?$ site.php?url=$1 [QSA,L]
RewriteRule contact$ contact.php [QSA,L]

ただし、私が問題を誤解していて、ブラウザが送信する必要はupdate=trueなく、すべてのリクエストで強制的に送信したい場合は、単に書き換えルールに追加してください。

RewriteRule ^([a-zA-Z0-9\_\-]+(\.)[a-zA-Z0-9\_\.\-]+)/?$ site.php?update=true&url=$1 [QSA,L]
于 2012-05-06T19:05:06.997 に答える