Rewriting op Apache goed instellen

Status
Niet open voor verdere reacties.

McMeller

Terugkerende gebruiker
Lid geworden
11 apr 2007
Berichten
1.524
Vermoedelijk staat het antwoord op mijn vraag hier, maar ik kom niet tot de juiste conclusie.

Volgens mij wil ik iets simpels. Onze website stond in de DocumentRoot en werkte goed. Ik wil een nieuwe website gaan bouwen, in een aparte map. Daarom heb ik de werkende website verplaatst naar /site. Met onderstaande regels in de .htaccess herschrijf ik bezoekers naar deze map.

Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/site/
Rewriterule ^(.*)$ site/$1 [L]

Werkt allemaal prima. Het leerzame was dat ik een trailing slash achter /site moest plaatsen omdat de map een submap /sites bevat. Zonder trailing slash zit dat elkaar in de weg.

Nu gebeurt waar ik al bang voor was. Ik heb een map /beta naast /site (in de DocumentRoot dus) aangemaakt en de rewrite wordt hierop ook toegepast. Dat is niet de bedoeling. Mijn vraag is dus: wat is de juiste configuratie om alle normale bezoekers naar /site te brengen, en beta.domein of domein/beta niet?

De oplossing is vast heel logisch en eenvoudig, maar ik zie hem niet.
 
Laatst bewerkt:
Je kunt de rewrite alleen toepassen als alleen de basis URL wordt gebruikt toch? Je kunt ook kijken of de rewrite al is toegepast.

Als alternatief kun je ook gebruik maken van virtual hosts, wat me hier eigenlijk de juiste oplossing lijkt.
 
Bedankt voor je reactie. De eerste zin begrijp ik niet helemaal, maar dat kan aan mijn kennis liggen.

Kun je mij wat meer vertellen over vhosts? Die term heb ik eerder gehoord maar ik weet niet goed wat het inhoudt.
 
virtual hosts laat je meerdere sites onder 1 IP draaien. Het mooie is dat je ook je "document-root" in kan stellen.

Je kunt bijvoorbeeld pietje.nl en henkie.nl op een enkele host draaien. interessanter voor jouw is waarschijnlijk:

site.nl & www.site.nl op/site/ draaien en
beta.site.net op /beta/ draaien.

Code:
<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com 
    DocumentRoot "/www/site"
</VirtualHost>

<VirtualHost *:80>
    ServerName beta.example.com
    DocumentRoot "/www/beta"
</VirtualHost>
 
Klinkt als iets wat je provider maar net moet ondersteunen, of niet?
 
Elke provider ondersteunt het volgens de manier van de webserver die zij gebruiken, maar de vraag is of je daar gemakkelijk als gebruiker daar bij kan komen.
 
Goede toelichting. Met alle oprechtheid denk ik van niet. One.com is wat beperkt in dat soort geavanceerde functies.

Kunnen we iets met mijn specifieke vraag?

Edit: One.com ondersteunt inderdaad geen vhosts.
 
Laatst bewerkt:
Kan je jouw site niet ontwikkelen op beta.jouwdomein.nl? En zodra je klaar bent dat je alles gewoon overkopieert?
Ik zie eigenlijk niet in waarom je in de workflow van ontwikkelen een RewriteRule nodig hebt?

Een aparte map voor je test-site in je parent-folder is eigenlijk een not-done . Hiermee kan je uiteindelijk snel in de knoop kopen, omdat je een afwijkend pad hebt. Ikzelf heb zelfs een goedkope testdomeinnaam aangevraagd voor mijn beta-site in de trant van:

http://www.mijnwebsite.me.uk (meuk, haha ;) )
 
Laatst bewerkt:
Hèhè, eindelijk iemand die meedenkt over de kern van de vraag en advies onderbouwt. Dankjewel.

Ik denk dat je gelijk hebt, dit voelt voor mij ook veel te ingewikkeld maar het wordt mij aanbevolen op het forum van Drupal. Ook de provider noemt dit als oplossing maar dat komt wellicht door de context waarin ik de vraag stel.

Wat stel je dan wel voor? Middels DNS normaal verkeer naar /site doorverwijzen? Dat ben ik nu aan het proberen.

De test-site in een folder binnen de normale site is vooropgesteld mijn intentie niet, daar is de hele vraag op gebaseerd.
 
Het voelt helemaal niet ingewikkeld. Het zijn twee verschillende sites, dus beiden horen los van elkaar te staan en beiden een eigen webroot-directory.

Je moet eigenlijk alleen een procedure schrijven zodat je de beta naar productie/live kan brengen als het zover is.
 
Laatst bewerkt:
Mee eens, voor mij voelt het ook niet ingewikkeld. Toch lukt het mij niet. Ik heb nu <leeg>.domein en www.domein doorverwezen naar site.domein. Op laatstgenoemde locatie werkt de site nu goed.

Dit werkt niet, ik krijg blanco pagina's op <leeg>.domein en www.domein. Ik chat nu met mijn provider, die adviseren mij wedermaal het in de .htaccess te regelen, met een rewrite. Ik vertel ze nu dat dat niet lukt, omdat het dan ook voor mijn beta-site wordt uitgevoerd, waar dat niet de bedoeling is. Even kijken welk antwoord ik krijg.

Kun jij dat verklaren? Waarom wordt de rewrite in de .htaccess in de root meegenomen terwijl ik middels een subdomein naar een submap ga?
 
Het kan wel via rewrites.

Je kijkt of de request_uri leeg is: rewrite naar /site

Je kijkt of de request_uri al naar /site is : stop met processen

voor de rest kun je andere directories dan laten.. let wel dit is niet heel veilig. je moet je beta site dan ook apart beveiligen bijvoorbeeld. Wat je nu doet is : is het niet "/site" dan "/site" wat een stuk rigoureuzer is dan wat je zou kunnen doen.

Hetzelfde kan ook met de URL zelf maar dan gebruik je HTTP_HOST om tegen te matchen ipv request/uri
 
Laatst bewerkt:
Klinkt goed! Mag ik je vragen mij te helpen met het maken van de juiste code hiervoor, indien ik toch voor .htaccess moet gaan?

Intussen probeer ik e.e.a. over de DNS-as. Het .htaccess-bestand in de root is nu weg. Zoals ik al schreef: de website werkt nu goed op site.domein, maar de doorverwijzingen van <leeg>.domein en www.domein hier naartoe gaven in blanco pagina's. Inmiddels ben ik erachter dat het komt door gebruik van een web alias in plaats van web forward. Met een web forward werkt het wel, maar dan ziet men ook site.domein in de adresbalk. Niet erg, maar niet mijn voorkeur. Iemand een verklaring waarom een web forward wel werkt, en een web alias niet?

Dit alles brengt mij op de gedachte de map site te hernoemen naar www. Klinkt dat als een goed idee? Ik ben het al even aan het testen: map www aangemaakt, www-alias verwijderd en de default DNS-instelling voor www uitgeschakeld. Ik wacht nu op een update van de DNS om te zien wat het doet.
 
Ik vraag mij af wat het nu tegen houdt dat er niet naar mijn oplossing wordt gekeken?
Een productiesite en een development-site horen in een beiden gescheiden webroot te staan. Niet de 'development' in een de webroot van de 'productie/live'.
 
Ik denk dat we elkaar verkeerd begrijpen want dat is nou precies mijn doel. In de root heb ik /site en /beta. Dan zitten we toch op dezelfde lijn?
 
Heb je het nu over de twee sites in je public_html / www / htdocs map?
 
Ja. Dat wel. Maar daar ontkom ik eigenlijk niet aan, tenzij je mij anders kunt leren. Bínnen die map is mijn intentie dus deze twee te scheiden, daar slaat eigenlijk de hele vraag op.
 
Mij lijkt dat juist dus niet praktisch.
Vraag je webhosting eens of ze een verschillende DOCUMENT_ROOT kunnen aanbieden per sub-domein.
Ik weet niet of je hosting DirectAdmin gebruikt, maar in dat geval kan je ook binnen DirectAdmin een subdomein als domain aanmaken.

Als het echt niet anders kan, dan houdt het op. Maar ik zou het als nadelig zien.
 
wampier, ben je nog online? Je hulp met het maken van die code zou erg welkom zijn.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan