I Apaches manual finns ett exempel du skulle kunna dra nytta utav:
RewriteCond %{REMOTE_HOST} ^host1.* [OR]
RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.*
RewriteRule ...some special stuff for any of these hosts...
15 svar · 1 469 visningar · startad av learn
Jag bygger en sajt dit olika domäner och subdomäner pekar.
Nu vill jag att vissa specifika subdomäner ska "skickas" till särskilda filer/script.
Exempelvis:
sub1.doman.se och www.sub1.doman.se
=> /sub1.php
sub2.doman.se och www.sub2.doman.se
=> /sub2.php
Hur ska dessa RewriteCond's och RewriteRule's se ut?
Tack på förhand! :)
I Apaches manual finns ett exempel du skulle kunna dra nytta utav:
RewriteCond %{REMOTE_HOST} ^host1.* [OR]
RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.*
RewriteRule ...some special stuff for any of these hosts...
:)
Så här ser min htaccess ut i sin helhet:
<IfModule mod_rewrite.c>
RewriteEngine On
# we skip all files with .something
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# Subdomän
RewriteCond %{REMOTE_HOST} ^sub1.*
RewriteRule ^(.*)$ sub1.php [QSA,L]
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
Jag hamnar hos index.php även om jag matar in sub1.doman.se... Något är inte helt rätt. Tacksam för all hjälp jag kan få.
Pekar din namnserver om alla subdomäner till samma ställe eller pekar den bara om domain.se och https://www.doman.se?
Någon som vet hur man skriver RewriteCond och RewriteRule för subdomäner? Tycker detta borde funka:
<IfModule mod_rewrite.c>
RewriteEngine On
# we skip all files with .something
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# Subdomän
RewriteCond %{REMOTE_HOST} ^sub1.*
RewriteRule ^(.*)$ sub1.php [QSA,L]
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
Men jag kommer bara till index.php oavsett subdomän eller ej....!
Om du testar att ta bort de andra reglerna så länge, och bara kör med omskrivningen för subdomäner, funkar det då? Jag tycker att det ser rätt ut. Anropar du med sub1.domän.se, eller har du www med först? Din RewriteCond tillåter endast sub1.domän.se, inte www.sub1.domän.se
P.s.
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond borde väl ligga före de två RewriteRule där, va?
D.s.
Ingen skillnad...
Tar jag bort
RewriteCond %{REMOTE_HOST} ^dev.*
så skickas jag till sub1.php, men då såklart hela tiden oavsett subdomän eller ej...
Alltså ligger felet i mitt RewriteCond. Den matchar inte subdomänen... Vad är felet på den? Säkert ngt litet slarvfel, men jag hittar det inte. Hjälp!
Ingen som kan se vad som är felet? Känns som att detta är en rätt så basic grej, vanligt förekommande villkor i en HTACCESS-fil...
Någon :q
Hmmm, när jag testade ändra från REMOTE_HOST till HTTP_HOST verkar det fungera...! Hmmm...
Ska det vara så då kanske? Vad är skillnaden?
Tacksam om ngn kan förklara för mig. :)
Tips: MOD_REWRITE CHEAT SHEET
Remote_host är väl besökarens adress?
Hur menar du? Besökarens adress till...? :l
Om jag uppfattat det rätt så är en kort beskrivning följande:
REMOTE_ADDR ger besökarens IP-nummer
REMOTE_HOST ska försöka ge besökarens domän.
Aha, tackar, nu är jag med. Så HTTP_HOST är alltså helt rätt väg att gå i mitt fall.