将参数传递给重写的 URL


passing parameters to rewrited urls

我的项目有关于不同网站的数据,所以我使用 .htaccess 重写了网址,这样当有人将包含点(.) 的名称传递给我的网站时,它会显示网站.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

这会将站点名称作为参数发送到站点.php。现在我希望再传递一个参数,就像它通常可以传递一样,例如。我希望网站获得实时更新的数据,我想传递?update=true以便它从互联网更新数据,而不是从数据库中获取数据。但是像这样传递参数

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

不起作用,如何将其他参数传递给我现有的重写 URL?

[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]