如何将URL重定向到另一个

时间:2011-08-11 05:58:11

标签: ajax .htaccess mod-rewrite jquery url-rewriting

行...

我已设置好以便在请求以下页面时(浏览器用户和服务器)

http://www.visualise.ca/?_escaped_fragment_=corona

网站返回以下内容(HTML快照)

http://www.visualise.ca/corona

“电晕”总是会发生变化,具体取决于用户或服务器请求的页面。它也可能是

http://www.visualise.ca/?_escaped_fragment_=anne-au-cherry

重定向到

http://www.visualise.ca/anne-au-cherry

由于

更新:好的,让我更清楚一点。我使用AJAX加载我的Wordpress帖子,加载时它们显示为http://www.visualise.ca/#!/corona。但谷歌要求将它们作为http://www.visualise.ca/?_escaped_fragment_=corona提供服务是不可抓取的,所以我修改了Wordpress来这样做。现在,Google可以抓取我的网页并对其内容编制索引并访问http://www.visualise.ca/corona处提供的HTML快照。

问题是,当我将http://www.visualise.ca/#!/corona链接粘贴到Facebook时,它似乎会读取http://www.visualise.ca/?_escaped_fragment_=corona并且无法读取内容。但是,当我直接粘贴其有效的http://www.visualise.ca/?_escaped_fragment_=corona链接时,它会显示http://www.visualise.ca/corona(HTML)。

所以我想如果我可以将http://www.visualise.ca/?_escaped_fragment_=corona重定向到http://www.visualise.ca/corona,它就可以解决我的问题。

这是现有的.htaccess文件

#--- DH-PHP handlers ---
AddHandler fastcgi-script fcg fcgi fpl
AddHandler php-fastcgi .php
Action php-fastcgi /cgi-bin/dispatch.fcgi


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

3 个答案:

答案 0 :(得分:1)

许多人做的常见错误是尝试匹配包括查询字符串在内的整个URL。实际情况是:匹配网址时,模式会应用到路径部分,查询字符串必须单独匹配

使用此规则:它会从此类网址/?_escaped_fragment_=corona/corona发出301永久重定向(其中corona可以是任何内容)。

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=([^&]*)
RewriteRule .* http://%{HTTP_HOST}/%1? [R=301,L]

答案 1 :(得分:0)

我猜你的问题确实是“我该如何进行这种重定向?”。所以答案就在这里:

我可以想到三种方式,每种方式都有细微差别。

  1. 执行重定向服务器端 这基本上意味着您在响应中设置重定向标头。在php中,您可以使用header函数执行此操作。它也可以执行delayed redirect,在这种情况下,您需要担心页面的内容。

  2. 使用html "http-equiv" meta tags使用客户端进行此操作。这样页面总是被加载。示例here

  3. 通过javascript完成。多数民众赞成你基本的document.location.href事情。你需要找到一种方法将参数传递给javascript,或让你的JS从地址URL本身读取它。

  4. 由于我向您展示了3种方法,我真的希望这就是您所寻找的:P


    看到评论后更新:

    以上方法会导致URL发生变化。如果您不希望更改URL,但在原始页面上显示该其他页面的内容,您可以使用iframe(baaaad)执行此操作,或者执行正确的操作并设置URL rewriting

    :)

答案 2 :(得分:0)

RewriteEngine on
RewriteRule \?_escaped_fragment_=(.*?) /$1 [L,R=301]

你在寻找什么?