我有以下.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/
片段标识符:
- 完全由客户端处理,从不从客户端发送到服务器
- 必须出现在URI的末尾,查询字符串之后