2012-03-11 10 views
5

Eventuali duplicati:
Apache rewrite based on subdomainCome riscrivere un sottodominio in una variabile in un URL?

E 'possibile riscrivere un URL come questo?

www.foo.website.com/some-page 

a

www.website.com/some-page?var=foo 

sto chiedendo una riscrittura (penso che è quello che si chiama) e non un redirect. io voglio che il primo URL rimanga nella barra degli indirizzi, ma che il server "ottenga" il secondo URL.

non ho mai capito come fare riscrive URL e finora i miei patetici tentativi di ottenere questo lavoro hanno fallito miseramente :-)

devo aggiungere che questo file .htaccess viene anche utilizzato da WordPress e ha il seguente codice:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /~kbj/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /~kbj/index.php [L] 
</IfModule> 

Qualsiasi aiuto o consiglio sarebbe molto apprezzato!

+2

http://stackoverflow.com/questions/49500/apache-rewrite-based-on-subdomain –

risposta

2

Quello che spiegherò è per i siti web multilingue, ma si può facilmente applicare questo a quello che stai chiedendo: rinominare "LANGUAGE" a "var" (sorriso).

Ecco cosa si potrebbe voler fare, per essere in grado di gestire in futuro molte sotto lingue. Controlla il tuo host: se contiene una "lingua conosciuta", aggiungilo in una variabile globale (= variabile di ambiente dal punto di vista di Apache) quindi alla fine, se la variabile "lingua" non è impostata, imposta come predefinita linguaggio. E infine, aggiungilo come parametro.

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.website\.com$ 
    RewriteRule ^(.*)$ "http://www.website.com/$1?var=%1" [P] 

    RewriteCond %{HTTP_HOST} ^(www\.)?(us|fr|pt)\.mydomain\.com$ 
    # Create an environment variable to remember the language: 
    RewriteRule (.*) - [QSA,E=LANGUAGE:%2] 
    # Now check if the LANGUAGE is empty (= doesn't exist) 
    RewriteCond %{ENV:LANGUAGE} ^$ 
    # If so, create the default language (=es): 
    RewriteRule (.*) - [QSA,E=LANGUAGE:es] 
    # Add the language to the URI (without modifying it): 
    RewriteCond (.*) $1?language={ENV:LANGUAGE} [QSA] 

</IfModule> 

(nota: per favore, per favore ... utilizzare la rientranza corretta).

0

Prova questo:

RewriteCond %{HTTP_HOST} ^([^.]+).domain.com$ 
RewriteRule (.*) http://www.domain.com/$1?subdomain=%1 

Prende tutto ciò che trova come sottodominio e la mappa al fascicolo del dominio principale con il nome di sottodominio collegato come parametro get.

2
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.website\.com$ 
RewriteRule ^(.*)$ "http://www.website.com/$1?var=%1" [P] 

Utilizzare il flag P per eseguire il proxy della richiesta.

http://httpd.apache.org/docs/current/rewrite/flags.html#flag_p

+0

Grazie per la risposta. Ho provato a utilizzare il codice che hai suggerito, ma sfortunatamente non ha funzionato. Ho provato a rimuovere tutto dal file .htaccess eccetto http://pastebin.com/4i7LKn48 e quindi navigando su www.test.website.com, e ottengo un errore "Server non trovato". Qualche idea sul perché non funziona? Grazie ancora per il vostro aiuto. – Nate

Problemi correlati