301重定向没有片段[重复]

Posted

技术标签:

【中文标题】301重定向没有片段[重复]【英文标题】:301 Redirect without fragment [duplicate] 【发布时间】:2013-01-06 18:44:53 【问题描述】:

可能重复: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 仍保留在最终 URL 中。如何解决这个问题?

【问题讨论】:

特殊字符重定向是什么意思? 哪个特殊字符不适合您? #?有特殊含义,服务器看不到 显示你的 .htaccess 文件 【参考方案1】:

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

这个#....被称为Fragment,特殊字符没什么意思(一个URI有很多特殊字符,比如:%?& ),最好使用正确的名称。

下一个 HTTP 标准版本可能会解决这个问题,但它仍然有点脆弱,草案中的含义有时会发生变化,而且由于我无法展望未来,现在如何通过HTTP 的下一个稳定版本。

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

URL Fragment and 302 redirects php Location Header Ignore Hash

【讨论】:

【参考方案2】:

您可以在 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

【讨论】:

以上是关于301重定向没有片段[重复]的主要内容,如果未能解决你的问题,请参考以下文章

301 在 Django 中重定向 www 子域

如何撤消 301 重定向?

HTTP页面是如何完成301重定向的

如何 301 将“domain.com/?...”重定向到“domain.com”[重复]

重定向 301:带有参数但没有值的 URL

使用 .htaccess 进行大规模 301 重定向