webForumDet fria alternativet

Skicka subdomäner till olika script m.h.a. HTACCESS

Webbutveckling

15 svar · 1 471 visningar · startad av learn

Medlem sedan jan. 20051 130 inlägg
Frågan#1

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! :)

Medlem sedan jan. 2005953 inlägg
#2

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...

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

Medlem sedan jan. 20051 130 inlägg
#3

Hmm, får det inte att funka...

  RewriteCond %{REMOTE_HOST}  ^sub1.*
  RewriteRule ^(.*)$ sub1.php
Medlem sedan jan. 2005953 inlägg
#4

learn skrev:

Hmm, får det inte att funka...

Och med det menar du? Vad händer? Felmeddelanden?

Medlem sedan jan. 20051 130 inlägg
#5

:)

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å.

Medlem sedan juni 20031 837 inlägg
#6

Pekar din namnserver om alla subdomäner till samma ställe eller pekar den bara om domain.se och https://www.doman.se?

Medlem sedan jan. 20051 130 inlägg
#7

Ja, alla subdomäner pekar på samma ställe (public_html-mappen) som "doman.se". Skillnaden ska bara vara vilken fil (sub1.php, sub2.php osv...) som körs. Vad stämmer inte i ovan htaccess, jag förstår inte...

Medlem sedan jan. 20051 130 inlägg
#8

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....!

Medlem sedan jan. 2005953 inlägg
#9

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.

Medlem sedan jan. 20051 130 inlägg
#10

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!

Medlem sedan jan. 20051 130 inlägg
#11

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

Medlem sedan jan. 20051 130 inlägg
#12

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

Medlem sedan juni 20031 837 inlägg
#13

Remote_host är väl besökarens adress?

Medlem sedan jan. 20051 130 inlägg
#14

Hur menar du? Besökarens adress till...? :l

Medlem sedan juni 20031 837 inlägg
#15

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.

Medlem sedan jan. 20051 130 inlägg
#16

Aha, tackar, nu är jag med. Så HTTP_HOST är alltså helt rätt väg att gå i mitt fall.

435 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
291 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
289 ms — ändringar (db)