2011-08-11 71 views
2

OK ......如何URL重定向到另一个

我已经安装的东西,这样当被请求如下页面(浏览器的用户和服务器)

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

网站返回以下的这个(HTML快照)的含量

http://www.visualise.ca/corona

其中 '晕' 随时更改,其变化取决于不g在用户或服务器请求的页面上。它也可能是

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

重定向到

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

感谢

UPDATE: OK让我更清楚。我使用AJAX来加载我的Wordpress帖子,并且在加载时它们看起来像这样的http://www.visualise.ca/#!/corona。但它不能被Google抓取,请求将它们作为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(The 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 
+0

听起来就像你已经掌握了一切,然后。有问题吗? – Phil

+0

当我将http://www.visualise.ca/?_escaped_fragment_=corona粘贴到Facebook时,我可以看到http://www.visualise.ca/corona的内容出现在预览中,但当我输入http:/ /www.visualise.ca/?_escaped_fragment_=corona在浏览器地址栏中,然后按回车。 – Gab

回答

1

很多人做的常见错误是试图匹配整个URL,包括查询字符串。现实情况是:匹配URL时,模式被应用到它的路径部分并且查询字符串必须单独匹配

使用此规则:它将发出301永久重定向从这种URL /?_escaped_fragment_=corona/corona(其中corona可以是任何东西)。

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

谢谢,它回答我的问题。但我试图用http://visualise.ca/#!/corona做同样的事情,但似乎并不奏效。 RewriteCond%{QUERY_STRING} ^#!/([^&] *) RewriteRule。* http://%{HTTP_HOST} /%1? [R = 301,L] – Gab

+0

@Gab它不会工作..作为散列(片段标识符 - 包含此符号本身的##后的所有内容)仅为**客户端**并且从不首先发送到服务器地点。 – LazyOne

0

我想你的问题实在是“我怎么做到这一点的重定向?”。所以答案在这里:

我有三种方法可以考虑,每种方法都有细微差别。

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

  2. 这样做使用客户端使用HTML的"http-equiv" meta tags。这样页面总是被加载。示例here

  3. 通过javascript来做到这一点。那就是你基本的document.location.href的东西。你需要找出一种方法将参数传递给javascript,或让你的JS从地址url中读取它。

自从我向您展示这样做的3种方式,我真的希望这是你在找什么:

以上:看到评论苯磺酸之后


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

:)

+0

我更新了我的问题。 – Gab

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

是你在找什么呢?

+0

我得到500内部服务器错误 – Gab

+0

我添加了现有的.htaccess文件到我的问题 – Gab

+0

@Gab:编辑。对不起 – genesis

相关问题