Lui*_*uot 8 .htaccess redirect
我有两个分开的vhost.在www.一,我在.htaccess上只有这一行
redirectMatch 301 ^(.*)$ http://d_blur_blur_s.com$1
Run Code Online (Sandbox Code Playgroud)
除了在POST转换为GET的情况下,所有工作都按预期工作.
请注意帖子有参数作为get(我没有这样做,我不会改变它)我只是想避免重复的内容.我正在展示萤火虫痕迹.
我希望通过redirectmatch或其他技巧在主域上重定向POST.

更新
我有一半的内部链接在网站上用www写,而另一半没有它.所以我需要保持公开但不重复.我需要将GET转发为GET并将POST作为POST发送.问题很大,我有12000页索引,并有很多表格.所以我首先在不改变代码的情况下搜索通用解决方案.我完全控制服务器.
非常感谢
无论是POST还是GET请求,服务器对您提出的任何请求的重定向响应总是会导致您的客户端发出GET请求(除非您以某种方式使其不能自动跟踪重定向 - 有时我会使用curl执行此操作,但我不知道任何广泛使用的浏览器,这个功能很容易为用户提供).客户端浏览器获取重定向提供的URL,并将其视为执行GET请求的URL.没有办法,POST数据被服务器丢弃,因为它是用于原始URL的服务器资源.
如果你在.htaccess之外重定向,比如说在PHP文件中构建重定向响应,你唯一的选择是将POST参数转换为一串GET参数,并将它添加到你发送回客户端的URL的末尾.重定向响应.
我非常有信心无论是通过mod_rewrite模块使用redirect指令还是重写指令,都无法在.htaccess文件或httpd.conf文件中进行重定向的自动POST参数.
您使用307而不是301重定向来保留发布数据,但是如果某些浏览器确定要发送发布数据,则会向用户显示一个对话框,所以不是真的很漂亮.
但我宁愿去解决根本问题.如果html表单引用了错误的域(例如<form action="www.d_blur_blur_s/public/main/loginGenerator.php" ...),那么将帖子发送到错误域的唯一方法就是.只需修复HTML.
不要担心重复的内容,因为搜索引擎永远不会发送后请求,只有获取.您当前的解决方案应该可以防止重复内容.
进行重定向并保留 POST 数据(据我所知)的唯一方法是将 mod_rewrite 与 mod_proxy 一起使用,然后P在 RewriteRule 中使用标志。
在您的www主机上启用mod_rewrite 、mod_rewrite 和 .htaccesshttpd.conf,然后将此代码放入您的目录.htaccess下DOCUMENT_ROOT:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteRule ^ http://d_blur_blur_s.com%{REQUEST_URI} [P]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8923 次 |
| 最近记录: |