我正在尝试重定向没有www的网址.到www.version(example.com到www.example.com).
我常用
RewriteCond %{HTTP_HOST} ^example\.com [nc]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

这适用于我所有的其他项目.但是在此特定站点上,它以重定向循环结束.这是奇怪的部分:我试图卷曲非www版本以查看它使用的发送标头
curl –get http://example.com –dump-header domain.header> domain.html.
头文件看起来像这样:

HTTP/1.1 301 Moved Permanently
Date: Mon,06 Jun 2011 14:45:16 GMT
Server: Apache/2.2.16 (Debian)
Location: http://example.com/
vary: Accept-Encoding
Content-Length: 310
Content-Type: text/html; charset=iso-8859-1

但是,生成的HTML文件是这样的:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.example.com/">here</a>.</p>
<hr>
<address>Apache/2.2.16 (Debian) Server at example.com Port 80</address>
</body></html>

(注意文件之间的地址差异)
有人知道如何解决这个问题(以及它到底是什么原因造成的)?
任何其他URL重写指令都可以正常工作.

编辑:重写日志包含这个:(该网站被很多人访问,所以重写日志得到很长时间,我不是100%肯定,如果这是正确的部分)

192.168.1.221 - - [06/Jun/2011:17:49:32 +0200] [example.com/sid#b797f948][rid#b7d2c1c8/initial] (3) [perdir /var/www/oup/81/] strip per-dir prefix: /var/www/oup/81/ ->
192.168.1.221 - - [06/Jun/2011:17:49:32 +0200] [example.com/sid#b797f948][rid#b7d2c1c8/initial] (3) [perdir /var/www/oup/81/] applying pattern '(.*)' to uri ''
192.168.1.221 - - [06/Jun/2011:17:49:32 +0200] [example.com/sid#b797f948][rid#b7d2c1c8/initial] (2) [perdir /var/www/oup/81/] rewrite '' -> 'http://www.example.com/'
192.168.1.221 - - [06/Jun/2011:17:49:32 +0200] [example.com/sid#b797f948][rid#b7d2c1c8/initial] (2) [perdir /var/www/oup/81/] explicitly forcing redirect with http://www.example.com/
192.168.1.221 - - [06/Jun/2011:17:49:32 +0200] [example.com/sid#b797f948][rid#b7d2c1c8/initial] (1) [perdir /var/www/oup/81/] escaping http://www.example.com/ for redirect
192.168.1.221 - - [06/Jun/2011:17:49:32 +0200] [example.com/sid#b797f948][rid#b7d2c1c8/initial] (1) [perdir /var/www/oup/81/] redirect to http://www.example.com/ [REDIRECT/301]

访问日志行(可能是正确的):

192.168.1.221 - - [06/Jun/2011:17:49:32 +0200] "GET / HTTP/1.1" 301 555 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML,like Gecko) Chrome/11.0.696.77 Safari/534.24"

virtualhost的定义:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName example.com
        ServerAlias example.com www.example.com
        DocumentRoot /var/www/example/
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/example/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug,info,notice,warn,error,crit,# alert,emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

编辑2:好吧,我只是想通了如果我这样做(辞职并尝试重定向,没有.htaccess):

//if clause determining that we're running on example.com and not www.example.com
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.example.com' . $_SERVER['REQUEST_URI']);
header('Connection: close');

它导致完全相同的重定向循环.说真的,到底是什么?有没有人知道可能导致这种情况的原因是什么?

让我感到奇怪的是位置:CURL报道的http://domain.cz/标题行.您永远不会重定向到该域.重定向日志也不包含任何提及.

不知何故,在modrewrite执行其操作之后,Location标头似乎已被更改,并且由于您尝试使用PHP更改标头,因此在处理请求后,Location标头显然已更改.我能想到的唯一解释是你正在某处用mod_header修改位置标题.

如果您在某处找到与此类似的行,您是否检查了所有配置文件(httpd.conf,包含的.conf文件和.htaccess文件):

Header set Location (...)

要么

Header edit Location (...)

php – .htaccess没有正确地重定向到www-prefixed页面的更多相关文章

  1. ios – 将iphone应用程序重定向到苹果商店

    我有一个iPhone应用程序,当有可用的升级时,我想提示用户升级,如果他们点击升级,我想将它们重定向到苹果商店.这是怎么做到的?

  2. ios – Oauth突然无法使用iphone(仅安装了FS应用程序)

    我们的iPhone应用程序允许通过oauth通过Foursquare登录.它工作正常,最近停止工作.我们得到的错误是:连接失败:回调uri对此使用者无效.但是,如果用户没有在手机上安装foursquare应用程序,它可以像以前一样正常工作.似乎FS现在正在进行重定向来处理FS应用程序内部的oauth,并且在尝试返回到原始应用程序时失败.通过野生动物园它似乎工作.这是在ios9上.解决方案?

  3. ios – 以http无效的自定义URL方案开头

    我在应用程序中使用了自定义URL方案.我成功地从safari重定向到我的应用程序.就像我已经制作了URL方案“appname”.请检查http://prntscr.com/2cjx0p.我需要使用像iosurlredirectfrommailtoapp这样的解决方案,但我不确定如何设置cookie.我发现我必须首先在我的应用程序中为服务器“http://myappname.com”设置一个cook

  4. ios – NSURLProtocol的抽象方法

    我一直在我的应用程序中使用自定义NSURLProtocol来检测资源并从缓存目录加载(如果可用),或重定向回我的应用程序的服务器.但是,我发现缺少抽象方法的文档,我不知道如何处理我们需要实现的一些抽象方法.我们必须实施:canInitWithRequest很简单,这就是告诉NSURLProtocol您将响应此请求的方式.我不知道如何处理canonicalRequestForRequest:在sta

  5. ios – NSURLRequest:如何处理重定向的帖子?

    没有收到连接响应.处理重定向的相关iOS方法是,根据Apple的文档,如果代理没有实现连接:willSendRequest:redirectResponse:,所有规范更改和服务器重定向都是允许的.那么这不是我的经验,因为离开这个方法不适合我.该请求只是挂起没有响应.苹果还建议执行willSendRequest,这对我来说不起作用.我看到了调用,但结果的请求只是挂起.我当前执行的willSendRequest如下(见下文).这遵循重定向,但是处理请求就像是GET,而不是POST.我相信问题是重定向失去了H

  6. ios – Safari Web检查器不显示重定向

    我试图通过mc书上的safariwebinspector调试网络流量,但是我无法看到重定向的请求响应流量.让我们说A页重定向到B,重定向到C.在检查员中,我可以看到请求到页面A与站点C的响应数据,但我看不到中间发生了什么.在chrome中,我可以看到所有的重定向,因为我应该,但是我不能使用chrome,因为我想调试iphone模拟器.是否有可能配置safari检查员显示重定向?解决方法目前,您无法在Safari的WebInspector实用程序中查看重定向.#SuperSad

  7. ios – 在302重定向之后,AVPlayer无法为同一个域发送cookie

    有没有办法解决这个问题?请分享你的想法.解决方法制作一个演示该问题的示例,提交错误报告.然后创建一个提到雷达的DTS事件,并且您正在寻找一个解决方案,以便您认为是一个错误.这打开了两种可能性:>工程师可以确认错误–如果不知道他们会修复它,如果它是重复的,您可以请求原始状态信息>DTS具有足够的知识,有能力查询实际的AV工程师如何解决这个问题这样你就可以花更少的时间找到可能不会得到任何其他答案的地方.

  8. ios – 禁用WKWebView打开链接以重定向到我的iPhone上安装的应用程序

    当我搜索google并点击Etsy.com作为例子,WKWebView重定向到我的iPhone上安装的Etsy应用程序.如何禁用此行为?

  9. 在构建Xcode项目时可以转储AST吗?

    我一直在使用他们的AST来分析Swift项目,我想知道在使用Xcode构建Swift项目时是否可以生成它.现在,当对单个文件和简单项目运行swiftc-dump-ast命令时,我可以在终端上打印AST.然而,当将它用于更复杂的项目时变得更加困难.因此,我想使用xcode.我已经尝试将-dump-ast标志传递给BuildSettings>中的编译器.Swift编译器–自定义标志>其他Swift旗.

  10. ios – 在没有重定向的情况下建立到iTunes商店的联盟链接?

    id=sf2bW7QX/qU&offerid=146261.10005745&type=3&subid=0解决方法我认为你不想重定向的原因是>避免Safari浏览器弹出>避免AppStore应用程序内部的重定向我更喜欢k1th的解决方案,但是失败了,我认为问题是第一个itms链接不是“最终”链接.一种解决方案是简单地对URL进行硬编码:更清晰的解决方案是从request.URL中的itms链接读取应用程序ID,并使用将直接带到您的应用程序的模式格式化新URL.

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部