2017-08-25 3 views
0

Wie umschreiben i statische Dateien wie http://example.com/assets/img/logo.png zu anfordern http://assets.example.com/img/logo.pngApache2 mod_rewrite Regeln

Hauptseite Rewrite-Regeln

ServerName example.com 
    ServerAlias example.com 
    DocumentRoot /var/www/html/example.com/public/ 

    <Directory /var/www/html/example.com/public/ > 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
    </Directory> 

RewriteEngine on 
RewriteCond %{HTTP_HOST} !assets\.site\.com 
RewriteCond %{REQUEST_URI} \.(png|gif|ico|css|js|tiff|woff|woff2|ogg|mp3)$ [NC] 
RewriteRule ^(.*) http://assets.example.com$1 [NC,L] 

Sub-Domain für Vermögenswerte ordnungsgemäß funktioniert

virtuelle Host-Konfiguration für assets.example.com

ServerName  assets.example.com 
    ServerAlias assets.example.com 
    DocumentRoot /var/www/html/example.com/public/assets/ 

    <Directory /var/www/html/example.com/public/assets/ > 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
    </Directory> 

http://assets.example.com/img/logo.png gibt einen 404 aber wenn ich eine /var/www/html/example.com/public/assets/assets/ erstellen dann http://assets.example.com/img/logo.png reutns 200

+0

Ich glaube nicht, Sie ein Cross-Domain-Rewrite tun können 'mod_rewrite' verwenden. Ich würde vorschlagen, stattdessen [mod_proxy] (https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html) zu betrachten und einen "proxy_pass" zu machen. – Charles

+0

Ich konnte alle/assets/img/logo umschreiben. png usw. zu assets.example.com/assets/img/logo.png. Einzige Probleme waren die wiederholten '/ Vermögenswerte /' – erax

Antwort

0

Per Ihren Kommentar, man muss nur Ändern Sie das, was Sie in der Regex von der RewriteRule gefangen nehmen. Gerade jetzt $1 ist der Wert von dem, was in (.*) ist. Sie können "Assets" daraus entfernen, indem Sie sie dem Pfad vor Ihrer Capture-Gruppe hinzufügen.

Wechsel:

RewriteRule ^(.*) http://assets.example.com$1 [NC,L] 

An:

RewriteRule ^assets/(.*) http://assets.example.com/$1 [NC,L]