301没有片段的重定向

时间:2013-01-23 10:14:17

标签: php .htaccess redirect uri fragment-identifier

  

可能重复:
  URL Fragment and 302 redirects

我需要帮助解决没有特殊字符的301重定向问题。

例如,我想重定向以下网址:

http://www.iphoneapplications.us/iphone-ipad-mobile-apps-portfolio.html#Gigguid

到以下网址:

http://www.i-phonedeveloper.com/portfolio.html

我已更改.htaccess以执行重定向,但片段#Gigguid仍保留在最终到达网址中。如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

当前的HTTP标准不允许您进行此类重定向 - 至少HTTP客户端拒绝这样做。您的浏览器将始终将#...部分添加到重定向URI。

顺便说一下,#....被称为 Fragement ,特殊字符并没有多说(URI有很多特殊字符,如:%,{ {1}}和?),最好使用正确的名称。

下一个HTTP标准版本可能会解决这个问题,但它仍然有点脆弱,草案中的含义有时会发生变化,因为我无法展望未来现在如何做到这一点还为时尚早。下一个稳定版的HTTP。

有关更多信息,请参阅此问题:

答案 1 :(得分:0)

您可以在htaccess中使用此代码

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase   /
RewriteCond %{REQUEST_URI} ^(.*)-(.*)\.(html|htm|php)$
RewriteRule ^ /%2.%3 [R=301,L]

示例:

http://www.iphoneapplications.us/iphone-ipad-mobile-apps-portfolio.html?id=3#Gigguid

重定向到:

http://www.i-phonedeveloper.com/portfolio.html?id=3#Gigguid