0

How to rewrite search/2 from index.php?search="x"&&searc_by="y"&page_no=2?

If I am not wrong %REQUEST_URI is search/2, right? Also what is %THE_REQUEST in this case.

The page where search/2 link is located is rewritten as just home_page.

4

1 回答 1

0

%{REQUEST_URI}并且%{THE_REQUEST}是 mod_rewrite 中的变量。这些变量包含以下内容:

  • %{REQUEST_URI}将包含主机名后面和查询字符串之前的所有内容。在 urlhttp://www.example.com/its/a/scary/polarbear?truth=false中,%{REQUEST_URI}将包含/its/a/scary/polarbear. 此变量在每次重写后更新。
  • %{THE_REQUEST}是一个变量,包含向服务器发出的整个请求。这是形式的东西GET /its/a/scary/polarbear?truth=false HTTP/1.1。由于向服务器发出的请求在一个此类请求的生命周期内是静态的,因此在进行重写时此变量不会更改。因此,在您只想在外部请求包含某些内容时重写的某些情况下很有帮助。它通常用于防止发生无限循环。

可以在此处找到完整的变量列表。


在您的情况下,您将有一个指向search/2?search=x&search_by=y. 您想在内部将其重写为index.php?search=x&search_by=y&page_no=2. 您可以使用以下规则执行此操作:

RewriteRule ^search/([0-9]+)$ /index.php?page_no=$1 [QSA,L]

第一个参数匹配传入的外部请求。然后将其重写为/index.php?page_no=2. (query string append) 标志将现有的QSA查询字符串附加到重写的查询字符串。你最终得到/index.php?search=x&search_by=y&page_no=2. 该L标志停止了这一“轮”重写。这只是一个优化的事情。

于 2014-10-18T09:51:37.413 回答