Brent Faiyaz - Rehab (Winter In Paris) Official Video

Co je špatně?

NameVirtualHost *:80  ServerName www.apples.co.uk DocumentRoot /var/www/apples.co.uk RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.apples\.co\.uk$ [NC] RewriteRule ^(.*)$ http://www.apples.co.uk/$1 [L,R=301]   ServerName www.bananas.co.uk DocumentRoot /var/www/bananas.co.uk RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.bananas\.co\.uk$ [NC] RewriteRule ^(.*)$ http://www.bananas.co.uk/$1 [L,R=301]  

Problémy:

  • apples.co.uk správně přesměrovat na www.apples.co.uk, ale bananas.co.uk přesměruje na www.apples.co.uk.

  • Když buď apples.co.uknebo bananas.co.uk přesměrování, panel adresy bude mít za výsledek http://www.apples.co.uk//. Co způsobuje to extra lomítko na konci?

Zde je výstup apachectl -S :

[Sun Jul 31 08:41:52 2011] [warn] NameVirtualHost *:80 has no VirtualHosts VirtualHost configuration: wildcard NameVirtualHosts and _default_ servers: *:80 is a NameVirtualHost default server www.apples.co.uk (/etc/apache2/httpd.conf:3) port 80 namevhost www.apples.co.uk (/etc/apache2/httpd.conf:3) port 80 namevhost www.bananas.co.uk (/etc/apache2/httpd.conf:11) port 80 namevhost servername.apples.co.uk (/etc/apache2/sites-enabled/000-default:1) Syntax OK 

Myslím, že první problém je způsoben default server nastavení. Jak to odstraním? Musí existovat výchozí nastavení?

Vím, že také musím přidat sites-enabled zbavit se varování, ale to nechám na další otázku.

PRVNÍ:

  1. Nejprve definovaný VirtualHost bude použit jako catch all pro neznámé názvy domén.

  2. Apache o tom neví apples.co.uk - ví jen o www.apples.co.uk. K poskytování tedy používá prvního virtuálního hostitele apples.co.uk. Přesměrování zde bude fungovat dobře.

  3. Apache o tom neví bananas.co.uk - ví jen o www.bananas.co.uk. K poskytování tedy používá prvního virtuálního hostitele bananas.co.uk .. který je www.apples.co.uk. Proto bude přesměrován na www.apples.co.uk.

Chcete-li vyřešit výše uvedený problém: Přidat ServerAlias apples.co.uk řádek uvnitř prvního virtuálního hostitele a ServerAlias bananas.co.uk do druhého. Pokud chcete chytit JAKÉKOLI subdoménu - přidejte také tento řádek: ServerAlias *.apples.co.uk (stejné pro bananas.co.uk).


DRUHÝ:

The RewriteRule URL bude obsahovat úvodní lomítko, pokud je deklarováno v kontextu konfigurace serveru / virtuálního hostitele. Pokud by toto pravidlo přepsání bylo deklarováno v .htaccess, fungovalo by to dobře, ale zde (uvnitř deklarace VirtualHost) vy je třeba odstranit lomítko za názvem domény v RewriteRule cílová. Proto máte za přesměrováním doménové jméno za doménou.

Můžete také trochu urychlit shodu hostitele nahrazením relativně nákladného regulárního výrazu jednoduchým porovnáním řetězců: !^www\.bananas\.co\.uk$ => !=www.bananas.co.uk.


NameVirtualHost *:80  ServerName www.apples.co.uk ServerAlias apples.co.uk DocumentRoot /var/www/apples.co.uk RewriteEngine On RewriteCond %{HTTP_HOST} !=www.apples.co.uk [NC] RewriteRule ^(.*)$ http://www.apples.co.uk$1 [L,R=301]   ServerName www.bananas.co.uk ServerAlias bananas.co.uk ServerAlias *.bananas.co.uk DocumentRoot /var/www/bananas.co.uk RewriteEngine On RewriteCond %{HTTP_HOST} !=www.bananas.co.uk [NC] RewriteRule ^(.*)$ http://www.bananas.co.uk$1 [L,R=301]  

Myslím, že první problém je způsoben výchozím nastavením serveru. Jak to odstraním? Musí existovat výchozí nastavení?

Vytvořte VirtualHost pro nějaký falešný název domény .. a umístěte jej jako první (před jakýkoli jiný deklarace) - poté se zobrazí chybová stránka Apache, když bude požadován takový neznámý název domény.

Pracoval pro vás: Charles Robertson | Chcete nás kontaktovat?