Ajax可抓取内容.htaccess重写规则

时间:2014-02-10 21:01:41

标签: ajax .htaccess rewrite

在过去的几个小时里,我一直试图弄清楚这一点,但无法让它发挥作用。

我正在将谷歌发送到我的AngularJS应用程序的每个页面的服务器端生成版本。

我的角度网址如下所示:

http://localhost:8000/#!/product/123/product+name

生成的静态版本具有以下URL结构:

http://localhost:8000/product/123/product+name

所以他们都非常相似。我尝试了一些不同的重写规则配置,但到目前为止还没有。例如:

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/?(.*)$
RewriteRule ^(.*)$ /%1? [NC,L]

非常感谢任何帮助。谢谢!

编辑:

我忘了说谷歌和其他搜索引擎将哈希爆炸网址转换为像

这样的网址
http://localhost:8000/?_escaped_fragment_=/product/123/product+name

当前.htaccess文件:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

RewriteCond %{REQUEST_URI}  ^/$
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/$ [NC]
RewriteRule ^ /snapshots/index.html? [NC,L]

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/?(.*)$
RewriteRule ^(.*)$ /%1? [NC,PT]
</IfModule>

1 个答案:

答案 0 :(得分:1)

我想我发现了这个问题。

由于符号链接上的内部重定向,请尝试使用PT标记而不是L标记。
这样,就会重新评估

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/?(.*)$
RewriteRule ^(.*)$ /%1? [NC,PT]

编辑:你必须重新安排你的规则。你的htaccess看起来应该是这样的

<IfModule mod_rewrite.c>
   <IfModule mod_negotiation.c>
      Options -MultiViews
   </IfModule>

   RewriteEngine On

   RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/?(.*)$
   RewriteRule ^(.*)$ /%1? [NC,PT]

   # Redirect Trailing Slashes...
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)/$ /$1 [L,R=301]

   # Handle Front Controller...
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^ index.php [L]
</IfModule>