2016-12-13 16 views
2

Ich benutze Rewrite-Regeln für zwei Zwecke. Erstens kann ich die URLs in meine CSS- und JS-Dateien umschreiben, sodass sie über ein Minimierungsskript verarbeitet werden können. Dies wurde adaequat:HTACCESS Rewrite: Ignoriere eine andere Rewrite-Regel

RewriteEngine on 
RewriteRule ^assets/css/min/([a-zA-Z0-9\._-]+)/([a-zA-Z0-9\._-]+)/([a-zA-Z0-9\._-]+)\.css$ assets/css/min.php?style=$1&theme=$2&ver=$3 [L,QSA] 
RewriteRule ^assets/js/min/([a-zA-Z0-9\._-]+)/([a-zA-Z0-9\._-]+)\.js$ assets/js/min.php?scripts=$1&ver=$2 [L,QSA] 

Aber jetzt habe ich eine Regel den gesamten Datenverkehr für nicht existierende Seiten auf meine index.php-Datei (für MVC Routing) zu umleiten:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ index.php/$1 [L] 
RewriteBase/

Das Problem ist jetzt, dass ich habe diese beiden Regeln in meiner HTACCESS Datei, ich bin nicht mehr in der Lage, wie meine .css oder JS-Dateien zuzugreifen:

http://domain.tld/assets/css/min/all/default/0.2.3.css 

Wie kann ich das Umleiten bekommen index.php die Pre zu ignorieren vious Regel mit meinem CSS und js Neuschreiben?

Antwort

1

Sie eine negative Vorschau in letzter Regel assets/ Verzeichnis überspringen können:

RewriteEngine on 

RewriteRule ^assets/css/min/([\w.-]+)/([\w.-]+)/([\w.-]+)\.css$ assets/css/min.php?style=$1&theme=$2&ver=$3 [L,QSA] 

RewriteRule ^assets/js/min/([\w.-]+)/([\w.-]+)\.js$ assets/js/min.php?scripts=$1&ver=$2 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(?!assets/)(.+)$ index.php/$1 [L,NC] 

Beachten Sie auch, dass Sie [a-zA-Z0-9_] mit kürzeren \w

+1

Ehrfürchtig ersetzen können, danke. – JROB

+0

Wie würde ich '^ (?! assets /)' ändern, um ein zusätzliches Verzeichnis hinzuzufügen, das ignoriert werden soll? – JROB

+0

Sie können es wie folgt verwenden: 'RewriteRule^(?! (Assets | dir2 | dir3) /) (. +) $ Index.php/$ 1 [L, NC]' – anubhava