可能的重复项:
网址片段和 302 重定向
我需要帮助有关没有特殊字符的 301 重定向。
例如,我想重定向以下 URL:
http://www.example.com/iphone-ipad-mobile-apps-portfolio.html#Gigguid
到以下网址:
http://www.example.com/portfolio.html
我已经更改了.htaccess
来执行重定向,但片段#Gigguid
保留在最终 URL 中。如何解决这个问题?
当前的HTTP标准不允许你做这样的重定向 - 至少HTTP客户端拒绝这样做。您的浏览器将始终将#...
部分添加到重定向 URI。
顺便说一下,这个#....
叫做Fragement,特殊字符并不多说(一个URI有很多特殊字符,如:
、%
、?
和&
),最好为此使用正确的名称。
下一个HTTP标准版本可能会解决这个问题,但它仍然有点脆弱,草案中的含义有时会发生变化,由于我无法展望未来,现在还为时过早,这将如何与下一个稳定的版本完成HTTP。
有关更多信息,请参阅此问题:
- 网址片段和 302 重定向
- PHP 位置标头忽略哈希
您可以在.htaccess
中使用此代码:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^(.*)-(.*).(html|htm|php)$
RewriteRule ^ /%2.%3 [R=301,L]
样本:
http://www.example.com/iphone-ipad-mobile-apps-portfolio.html?id=3#Gigguid
重定向至:
http://www.example.com/portfolio.html?id=3#Gigguid