Redirect middels .htaccess of PHP?

Pagina: 1
Acties:
  • 381 views sinds 30-01-2008
  • Reageer

Onderwerpen


Verwijderd

Topicstarter
Ik heb een website. Daar hangen 2 domeinnamen aan.

1. www.example.com
2. www.exampel.com

De ene is de echte domeinnaam, de andere een PTR (pointer record).
Nu heb ik al uiteraard gezocht op google, daar vind ik heel veel over subdomeinen redirecten van www.example.com/naam naar naam.example.com en omgekeerd, maar niet wat ik wil:

Stel iemand browsed naar het PTR, wordt dan automatisch naar de root van de site geredirect (die draait onder de andere domein naam, vervolgens wordt de aanvraag afgevangen en middels PHP of de .htaccess naar subdomein.example.com gestuurd.

Ter illustratie:
Ik browse naar www.exampel.com, en kom dan uit op subdomein.example.com.

Mijn hosting provider kan dit niet regelen, dus vandaar dat ik me afvraag of ik dit zelf kan doen middels een PHP of .htaccess file. En wat daar dan de beste aanpak voor is.
Wat het moet doen weet ik, ik weet alleen niet zo goed hoe dit aan te pakken, en met google krijg ik teveel info waar ik niet echt wijs uit wordt.

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
PHP redirect naar het domein, dus je zult ook het redirect domein bekijken in de adresbalk.
Met htacces kun je ook zorgen dat, het domein in de adresbalk niet zichtbaar is, als ik me niet vergis. Of je kunt frameforwarding doen. Maar dit is volgens mij niet geod voor google.

Verwijderd

Topicstarter
Het maakt mij niet uit wel URL je ziet in de adresbalk.
Het gaat erom dat er geredirect wordt.

  • Mr_gadget
  • Registratie: Juni 2004
  • Laatst online: 20-09 14:54

Mr_gadget

C8H10N4O2 powered

Ik weet niet wat PTR inhoud en of je php hebt maar anders kan het zo:


PHP:
1
2
3
<? 
header("location:subdomein.example.com");
?>

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Als je een forward doet met PHP vergeet dan niet om een 302 mover permantnly header mee te sturen.
PHP:
1
2
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.mijndomein.tld/");

Kan trouwens ook met .htaccess
code:
1
Redirect 301 / http://www.mijndomein.tld/

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het gaat er om dat je op basis van 2 URL's nu op 1 en dezelfde website terecht komt.
Ik wil dat gaan scheiden.
Normaal doe je dat op basis van hostheaders op je webserver, echter kan dat in mijn geval dus niet.

Daarom wil ik weten of je dat zelfde princiepe met een .htaccess of PHP file kunt bewerkstelligen.

PTR = Pointer Record.

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
PHP:
1
2
3
4
5
6
$uri = $_SERVER['PATH_INFO'];
$domain = $uri //strip hier je domeinnaam eruit
if($domain == "www.exampel.com"){
  header("Location: http://subdomein.example.com");
  exit;
}
Dit gaat dus niet werken. Want als je exampel.com/bla.php intypt, en example.com/bla.php bestaat niet, wordt je ook niet geredirect. Je kan wel kijken welke mappen/variabelen/bestanden achter exampel.com staan, maar je houd hetzelfde probleem. Geen oplossing met php dus afaik.

Je moet het wel met een htaccess oplossen volgens mij. Is er niet iets als:
code:
1
2
RewriteCond %{REMOTE_HOST}  ^exampel.com
RewriteRule  ^/$                 /subdomain.example.com/$1  [L]
Zoiets. Het zal niet helemaal werken, maar dit moet het wel doen volgens mij :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In dat 2e voorbeeld, daat staat echte wel 2x exampel.com ipv example.com.
Neem aan dat in de 2e regel je subdomein.example.com bedoeld?

Ga vanavond eens testen daarmee!

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Jups, sorry, ik heb het ff aangepast :) Notice wel dat dit ff uit de losse pols is, een halve copy/paste van de manual page. Mijn ervaring is dat een htaccess pas werkt na wat proberen, dus dat zal hier ook het geval zijn. De strekking blijft iig wel hetzelfde :)

[ Voor 74% gewijzigd door mithras op 16-02-2007 10:17 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Noted, maar het is in iedergeval een referentie model. ;)
Thanks!

Acties:
  • 0 Henk 'm!

  • soulrider
  • Registratie: April 2005
  • Laatst online: 27-11-2017
je 'remote host' is nooit exampel.com
dat is namelijk het opgevraagde domein

je $uri is echter wel *.exampel.com

mbv wat rondneuzerij in die voorbeelden van .htaccess-coding, vind je wrs de truc erachter en kan je dat aanpassen zodat ook.
www.exampel.com/subdomain doorverwijsd naar subdomain.example.com

en anders eerst regels maken zodat het lukt op je werkend domein (niet je PTR)

dan *.exampel.com/* doorverwijzen naar *.example.com/* (in .htaccess) zo vindbaar in voorbeelden

en die regel voor de andere regels zetten
.htaccess werkt alle regels 1 voor 1 af
(en oppassen want hierdoor kan je een dns-DoS maken op je domeinen - endless lopp van queries wegens telkens doorverwijzen van-naar)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dus ik moet eigenlijk zoiets schrijven in of PHP of in de .htaccess file?

Dus iets in de richting van:

if referrer = "www.exampel.com"
then "subdomein.example.com"

ofzo?

Acties:
  • 0 Henk 'm!

  • soulrider
  • Registratie: April 2005
  • Laatst online: 27-11-2017
in .htaccess is het beste.
(dan pakt ie dat direct over voor ev. alle onderliggende mappen)
anders moet je alles via dat ene .php-script sturen ....

ps: een referrer is een pagina die verwijst naar eentje bij jou mbv een hyperlink...

exampel.com is _geen_ referrer maar een door de client opgevraagd pagina.
(let even op de benamingen)

in de .htaccess info bij apache.org vind je dus de informatie dat de door de client opgevraagde link vindbaar is onder {REQUEST_URI} of {HTTP_HOST}
(weet ik niet meer zeker - zoek het dus even op als dat nog niet gebeurd is)

tip: http://httpd.apache.org/docs/1.3/misc/rewriteguide.html
(had je ook kunnen vinden in google mbv "rewrite rule .htaccess" en wat juist klikken)

en gebruik dat gegeven om te herschrijven/redirecten....

[ Voor 13% gewijzigd door soulrider op 17-02-2007 12:20 . Reden: nog een 2de bijgevoegd ... gaat wat zoeken zijn ]


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Dit wil je al in de virtual host doen, of desnoods in de .htaccess. De PHP is eigenlijk al te laat.

Voorbeeldje van hoe ik het implementeer:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<VirtualHost *>
        ServerName www.xboxic.com
        ServerAlias xboxic.com
        ServerAlias www.xboxic.net
        ServerAlias www.xboxic.org
        ServerAlias www.xboxic.info
        ServerAlias www.xboxic.nl
        ServerAlias www.xboxix.com

        # Redirect everything not in the main domain
        RewriteEngine on
        RewriteCond %{HTTP_HOST} !^www\.xboxic\.com$
        RewriteRule /(.*) http://www.xboxic.com/$1 [R=permanent,L]
</VirtualHost>
Alles wat niet boeit gestript, maar zie ook hoe www.xboxix.com, een common typo, hier door afgevangen wordt. Je kunt met Apache zelfs op wildcard domains aliasen btw, ik had hier ook een aantal regels kunnen besparen door "ServerAlias www.xboxic.*" te plaatsen.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Voor de volledigheid, een dergelijke record is geen PTR record. PTRs zijn voor reverse dns: '1.2.3.4 -> host.domain.com'. Een A record doet forward dns: 'host.domain.com -> 1.2.3.4'.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In hoeverre kan ik dat verhaal van die Virtual Host in mijn shared hosting omgeving implementeren?
Of zou ik aan mijn hosting provider moeten vragen dit in mijn config file te plakken?

Anders moet ik toch gaan rommelen met die {REQUEST_URI}

Acties:
  • 0 Henk 'm!

  • soulrider
  • Registratie: April 2005
  • Laatst online: 27-11-2017
bij virtual hosting gaat dat slecht.
want virtual hosting en aliassen moet je in je httpd.conf instellen (bij apache toch)
(of in je server config zelve - 'k zou het niet weten hoe het zit met iis of ev. anderen...)

daarvoor moet je daar aankunnen, en moet achteraf de server-service herstart worden.
(om die wijzigingen ook te doen gelden - ook vindbaar in de apache-documenten - http://httpd.apache.org/docs/1.3/mod/core.html#serveralias )

je kan eens kijken in je hosting-config.-paneel, maar wrs ga je moeten proberen met .htaccess

(en passeer zelf even via die links die ik gaf + $favo_searchengine dan lukt dat wel na wat probeersels)

effe een quote uit de docs:
`` Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo. ''
-- Brian Moore


die voodoo ga je zelf moeten zoeken ;) :+

//edit adhv van hieronder:
wrs is het daardoor wel iets makkelijker, maar moet je opnieuw kijken hoe er dan doorverwezen wordt...
(blijft die exampel.com zichtbaar, wordt die meegegeven in de requests, en zo ja hoe, ....)

't is een beetje ja veel kijken, proberen, en eenmaal je het hebt goed documenteren en koesteren

[ Voor 61% gewijzigd door soulrider op 17-02-2007 16:40 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Is er ook een poppetje van? ;-)

Heb het even bij mijn hosting provider neergelegd, die zei dat het niet mogelijk is om de virtual host aan te passen.
Wel kon ik mijn Domain Pointer Record om zetten naar een alias.
Maar of dat mij zou helpen?

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Wat een brakke hosting provider zonder verstand van zaken. Een echte had je namelijk gezegd dat je gewoon de ServerAlias regels in je controlpanel moet aanleggen (heten "Domain Pointers" in DirectAdmin) en vervolgens de Rewrite* regels in je .htaccess moet plaatsen. En je dan hetzelfde effect hebt maar minder performant.

Professionele website nodig?


Verwijderd

Topicstarter
Hoe minder performant is dat?
En welke regels zijn dat dan precies?
Pagina: 1