Alt alan PHP yönlendirme sorunu

4 Cevap php

Ben aşağıdaki geri önceki sayfaya bir sayfaya yönlendirmek için PHP kullanıyorum:

header("Location: {$_SERVER['HTTP_REFERER']}");

Sayfaları bu seti sadece dahili kullanıcılar tarafından kullanılabilir, bu yüzden ben referer her zaman mevcut olmayacağını gerçeği hakkında korkunç endişe değilim.

Ben koşuyorum sorun referer http://subdomain.domain.com/test.php?id=13 gibi görünüyor eğer, yönlendirme http://subdomain.domain.com/.domain.com/test.php?id=13 gidiş biter olmasıdır. Url ek .domain.com/ dikkat edin.

Ben değerini hardcoding tarafından test ettik, ve o da soruna neden olur. phpMyAdmin ancak bu belirli bir sunucuda, aynı sorunu muzdarip görünüyor.

Bu bir SO soru değilse, buna göre hareket edin.

EDIT: başına @ yaggo

dnm.php içeren yalnızca header("Location: http://subdomain.domain.com/test2.php ");

curl --head --referer 'http://subdomain.domain.com/' 'http://subdomain.domain.com/test.php'

HTTP/1.1 302 Found
Server: nginx/0.7.64
Date: Fri, 02 Apr 2010 17:21:45 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.2.12-pl0-gentoo
Location: .domain.com/test2.php

4 Cevap

Bu nginx yapılandırma sorunlara neden olduğunu görünüyor.

Onun tamamen mümkün olduğunu nginx yanıt başlıklarını değiştiriyorsa. Bu, varsayılan olarak değil - bunu vb ters proxy olarak davranması için amaçlayan bir konfigürasyona sahip olabilir

Eğer varsayılan yapılandırma ile bir nginx üzerinde yönlendirme test denediniz mi?

I've recreated both your programs on my server once with

header("Location: http://subdomain.domain.com/some/place");

ve bir kez

header("Location: {$_SERVER['HTTP_REFERER']}");

ve her ikisi de corret sonuç verir

curl --head --referer 'http://subdomain.domain.com/some/place' 'http://subdomain.domain.com/test.php'

HTTP/1.1 302 Found
Date: Fri, 02 Apr 2010 17:48:54 GMT
Server: Apache/2.0.52 (Red Hat)
X-Powered-By: PHP/5.1.2
Location: http://subdomain.domain.com/some/place
Connection: close
Content-Type: text/html

PHP ve farklı bir web sunucusu farklı bir sürümünü kullanıyorum, bu yüzden araştırmak için iki şey var.

[...] Yönlendirme http://subdomain.domain.com/.domain.com/test.php?id=13 gidiş biter.

Eğer biraz daha sorunu ortadan kaldırabilirsiniz? Bu url PHP tarafından döndürülen veya (Krom?) Onu görür nasıl tarayıcı olduğunu tam olarak ne?

Eğer örneğin gerçek başlıklarını kontrol edebilirsiniz curl ile:

$ curl --head --referer 'http://your-referer' 'http://your-page/'

header("Location: ".$_SERVER['HTTP_REFERER']);

Edited:

. Htaccess ayarlarını sizi denetlemek veya hiçbir çözüm bulunamadı eğer u bu son kaldırmak için preg_replace kullanabilirsiniz ". Domain.com"

ama bu bir bir php hata değildir görünüyor.

OR use javascript to get the referer address... then use window.location.href = url; to redirect ...