在.htaccess链接上包含GET变量


Include GET variable on .htaccess link?

我有以下.htaccess

RewriteRule ^register.html$ ?page=register

我有一个jquery ajax函数,它通常请求以下内容,它可以工作。

www.blabla.com/#!?page=register&module=ajax

然而,当我使用.htaccess 时,它会被窃听

www.blabla.com/#!kayit.html&module=ajax [HTTP/1.1 404 Not Found 114 ms]

我该怎么解决这个问题,有什么想法吗?

你根本做不到。您使用片段标识符(哈希符号后的文本)作为路径(这是ajax-y网站的正常过程),但片段标识符甚至从未到达服务器。您必须向服务器发出一个ajax请求,其中包含请求的内容

实际的问题是,如何将重写规则中的GET变量与已经提供的变量合并。

因此,在您的示例中,您希望将URL register.html?var=1重定向到?page=register&var=1。您可以添加qsappend(查询字符串附加)标志:

RewriteRule ^register.html$ ?page=register [qsappend]

文档:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriteflags

当您使用#时,实际上您对行进行了注释。

您可以将summyjs用于类似gmail的ajax请求。

http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-an-introduction-to-sammy-js/

片段标识符:

  1. 完全由客户端处理,从不从客户端发送到服务器
  2. 必须出现在URI的末尾,查询字符串之后