1

使用typo3 4.5/extbase 1.3 我正在尝试在多域环境中运行我的商店扩展:商店页面应该在HTTP 域A 上运行,并且在HTTPS 域B 上运行以下结帐过程。域B 是https://www。 ssl-id.de/[domainA](主机是 Strato)。因此,我设置了:

  1. 两个根分别具有域 A 和域 B 的域条目的两个页树
  2. HTTPS 页面树中​​的结帐页面已将“使用协议”设置为 HTTPS
  3. TS:baseURL 有条件地设置为域 A 或域 B(基于 ENV:HTTP_HOST)
  4. 为两个域设置了 realurl 配置(使用 $TYPO3_CONF_VARS['EXTCONF']['realurl']['[domainA]'] 和 $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.ssl-id.德'])

不幸的是,从 HTTP 商店重定向到 HTTPS 结帐导致 chrome 出现错误 310 (net::ERR_TOO_MANY_REDIRECTS)。网络报道说

Request URL:https://www.ssl-id.de/[domainA]/de/checkout.html?FE_SESSION_KEY=bc04cd0f5b835bcbdd8c475bafb037f7-ab3700f6a9fae520b75981130b31ec77&cHash=6d7e7195735947b09becbfa9c26c8bf0
Request Method:GET
Status Code:301 Moved Permanently
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie:fe_typo_user=bc04cd0f5b835bcbdd8c475bafb037f7
Host:www.ssl-id.de
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
Query String Parametersview URL encoded
FE_SESSION_KEY:bc04cd0f5b835bcbdd8c475bafb037f7-ab3700f6a9fae520b75981130b31ec77
cHash:6d7e7195735947b09becbfa9c26c8bf0
Response Headersview source
Connection:Keep-Alive
Content-Length:0
Content-Type:text/html; charset=utf-8
Date:Wed, 07 Nov 2012 09:54:06 GMT
Keep-Alive:timeout=3, max=99
Location:https://www.ssl-id.de/[domainA]/de/checkout.html?FE_SESSION_KEY=bc04cd0f5b835bcbdd8c475bafb037f7-ab3700f6a9fae520b75981130b31ec77&cHash=6d7e7195735947b09becbfa9c26c8bf0
Server:Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r
Set-Cookie:fe_typo_user=bc04cd0f5b835bcbdd8c475bafb037f7; path=/[domainA]/
X-Powered-By:PHP/5.3.8

其内容为“目标页面网址不存在,请再次查看相同的网址”。当使用第二个 HTTP url 而不是 HTTPS url 时,设置运行良好。直接调用结帐页面而不从商店页面重定向时,结果是相同的错误 310。

.htaccess 是一个非常标准的typo3-realurl .htaccess:

AddDefaultCharset utf-8

AddType video/mp4 mp4
AddType video/mp4 m4v
AddType video/ogg ogv
AddType video/webm webm
AddType video/webm webmv

<FilesMatch "\.(js|css)$">
  <IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 7 days"
  </IfModule>
  FileETag MTime Size
</FilesMatch>

<IfModule mod_rewrite.c>

RewriteEngine On
#RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ $1.$3 [L]

RewriteRule ^(typo3/|t3lib/|fileadmin/|typo3conf/|typo3temp/|uploads/|favicon\.ico) - [L]

RewriteRule ^typo3$ typo3/index_re.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L]

</IfModule>

关于如何消除重定向问题或如何更接近导致无限循环的重定向调用者的任何建议?

4

1 回答 1

4

问题是特定于主机(Strato)的:他们的 SSL 代理没有发送相关的 $_SERVER['HTTPS'] ,这以某种方式使typo3发疯。

解决方案是通过将以下行添加到 localconf.php 的末尾来自己设置 $_SERVER['HTTPS']:

if ($_SERVER['HTTP_X_FORWARDED_HOST'] == "www.ssl-id.de") {  
    $_SERVER['HTTPS'] = 1;  
}

或更一般的

if (this_is_a_ssl_request()) {  
    $_SERVER['HTTPS'] = 1;  
}
于 2012-11-07T12:07:48.557 回答