.htaccess riscrive il sottodominio nella directory

È ansible utilizzare .htaccess per riscrivere un sottodominio in una directory?

Esempio:

  • http://sub.domain.com/

mostra il contenuto di

  • http://domain.com/subdomains/sub/

Prova a inserire questo nel tuo file .htaccess:

RewriteEngine on RewriteCond %{HTTP_HOST} ^sub.domain.com RewriteRule ^(.*)$ http://domain.com/subdomains/sub/$1 [L,NC,QSA] 

Per una regola più generale (che funziona con qualsiasi sottodominio, non solo sub ) sostituisci le ultime due righe con questo:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com RewriteRule ^(.*)$ http://domain.com/subdomains/%1/$1 [L,NC,QSA] 

Non sono un esperto di mod_rewrite, spesso mi diverto, ma l’ho fatto su uno dei miei siti, potrebbe aver bisogno di altre bandiere ecc. A seconda delle circostanze. Sto usando questo:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ RewriteCond %{REQUEST_URI} !^/subdomains/subdomain RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L] 

Qualsiasi altra regola di riscrittura per il resto del sito deve andare in seguito per impedire che interferiscano con le riscritture del sottodominio.

È ansible utilizzare la seguente regola in htaccess per riscrivere il sottodominio in una sottocartella:

 RewriteEngine On #If the host is "sub.domain.com" RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC] #Then rewrite any request to /folder RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L] 

Linea per linea Spiegazione:

  RewriteEngine on 

La riga sopra dice al server di accendere il motore per riscrivere gli URL.

  RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC] 

Questa riga è una condizione per RewriteRule in cui confrontiamo l’host HTTP utilizzando il modello regex. La condizione dice che se l’host è sub.domain.com, quindi eseguire la regola.

  RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L] 

La regola corrisponde a http://sub.domain.com/foo e la reindirizza internamente a http://sub.domain.com/folder/foo .

Sostituisci sub.domain.com con il sottodominio e la cartella con il nome della cartella in cui vuoi indirizzare il tuo sottodominio.

Ho avuto lo stesso problema e ho trovato una spiegazione dettagliata in http://www.webmasterworld.com/apache/3163397.htm

La mia soluzione (il contenuto dei sottodomini dovrebbe essere in una cartella chiamata sd_subdomain :

 Options +FollowSymLinks -MultiViews RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^www\. RewriteCond %{HTTP_HOST} subdomain\.domain\.com RewriteCond $1 !^sd_ RewriteRule (.*) /sd_subdomain/$1 [L] 

reindirizza alla stessa cartella del sottodominio: .httaccess

 RewriteCond %{HTTP_HOST} !^www\. RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC] RewriteRule ^(.*)$ http://domain\.com/subdomains/%1 

Prova a inserire questo file .htaccess nella cartella sottodominio:

 RewriteEngine On RewriteRule ^(.*)?$ ./subdomains/sub/$1 

Reindirizza a http://domain.com/subdomains/sub/ , quando vuoi mostrarlo solo http://sub.domain.com/

Reindirizza la directory del sottodominio:

 RewriteCond %{HTTP_HOST} ^([^.]+)\.(archive\.example\.com)$ [NC] RewriteRule ^ http://%2/%1%{REQUEST_URI} [L,R=301] 

Per qualsiasi richiesta di sottodominio, usa questo:

 RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.band\.s\.co RewriteCond %{HTTP_HOST} ^(.*)\.band\.s\.co RewriteCond %{REQUEST_URI} !^/([a-zA-Z0-9-z\-]+) RewriteRule ^(.*)$ /%1/$1 [L] 

Basta creare una cartella come il nome del sottodominio di cui hai bisogno. La cartella deve esistere in questo modo: dominio.com/sub per sub.dominio.com .