我的文件夹结构如下:
- templates
- search.php
- page.php
- index.php
- index.php
这不是完整的结构,但足以解决这个问题。 Index.php
的任务是根据名为page
的第一个查询包含文件。然后,通过模板类,我得到了正确的模板。此部分的.htaccess
如下所示:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([a-zA-Z0-9\-]+)$ index.php?page=$1
现在出现了我无法解决的问题。我有另一个查询,搜索字符串。
index.php?page=search&q=some+query
是非友好网址的示例。现在,我想让此网址看起来像http://www.domain.com/search?q=some+query
。
我尝试使用RewriteRule ^([a-zA-Z0-9\-]+)?q=([a-zA-Z0-9\+\%]+)$ index.php?page=$1&q=$2
,但我得到Undefined index: q in ...
。
问题是,我怎样才能使第一个查询像静态页面一样行动,第二个行为就像从该页面查询字符串一样?
答案 0 :(得分:1)
您的第一条规则中只需要一个QSA
标记:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)/?$ index.php?page=$1 [L,QSA]
QSA
(查询字符串追加)标记在添加新查询参数时保留现有查询参数。RewriteRule
指令中的查询字符串。