0

我的项目有关于不同网站的数据,所以我使用 .htaccess 重写了 url,这样当有人将包含点 (.) 的名称传递给我的网站时,它会显示 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。现在我希望再传递一个参数,就像它通常可以传递的一样,例如。我希望该站点获得实时更新的数据,我想通过?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 回答