Ajax Mod_Rewrite:将普通/url转换为/#/网址

Ajax Mod_Rewrite:将普通/url转换为/#/网址,ajax,.htaccess,mod-rewrite,hash,server-side,Ajax,.htaccess,Mod Rewrite,Hash,Server Side,我有以下两个url案例 如果这些URL被调用,我希望mod_rewrite调用 我该怎么做呢?像这样的事情 # not existing file (images, css, etc) RewriteCond %{REQUEST_FILENAME} !-f # no query parameters RewriteCond %{QUERY_STRING} ="" # not / RewriteCond %{REQUEST_URI} !^/$ # external redirect and

我有以下两个url案例

  • 如果这些URL被调用,我希望mod_rewrite调用

  • 我该怎么做呢?

    像这样的事情

    # not existing file (images, css, etc)
    RewriteCond %{REQUEST_FILENAME} !-f
    # no query parameters
    RewriteCond %{QUERY_STRING} =""
    # not /
    RewriteCond %{REQUEST_URI} !^/$
    # external redirect and pass along query string and uri as fragment
    # i guess this must be an external redirect as the server side should
    # not see the fragment, R=redirect, NE=dont escape #, L=last rule
    RewriteRule ^(.*)$ /#!/$1 [R,NE,L]
    
    # same but with query parameter
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !^/$
    RewriteRule ^(.*)$ /?%{QUERY_STRING}#!/$1 [R,NE,L]  
    

    但我不确定这是否是个好主意。也许您应该在应用程序逻辑中或者使用客户端脚本来执行重定向。

    当我测试时,它没有显示片段部分。我会再试一次,让你知道。很抱歉,第一个版本更像是一个如何做的草稿。但是当前版本应该可以工作(已经测试过)。必须修复标志和NE,L标志。此外,当没有查询字符串时,您还需要两个cond/规则集来获取奇特的URL。