2017-12-11 2 views
1

möchte ich jeden Zugriff auf:für alle Fälle außer ein paar

www.example.com/demo/action.html

zu

www.example.com/demo/?section=action

Als action die Variable umleiten ändert sich. Aber ich will nicht, dass die Regel in ein paar Fällen anzuwenden, sagen lässt:

www.example.com/demo/mypage1.html 
www.example.com/demo/mypage2.html 

Für jene Fälle, die ich ihnen wollen die echten HTML-Seiten mypage1.html und mypage2.html zu laden.

Im Moment habe ich 20 Regeln für alle möglichen action Variablen. Aber da es in Bezug auf die Leistung nicht ideal ist, würde ich lieber nur die 2 Sonderfälle und eine einzige Regel für alle anderen Fälle haben.

Dies ist, was ich im Moment haben:

RewriteRule ^demo/removeUser.html$ demo/?section=removeUser [QSA] 
RewriteRule ^demo/addUser.html$ demo/?section=addUser[QSA] 
RewriteRule ^demo/addUser.html$ demo/?section=editUser[QSA] 
RewriteRule ^demo/addUser.html$ demo/?section=comment[QSA] 
... etc 

Antwort

1

Sie Ausnahme an der Spitze halten kann und dann eine allgemeine Schreibregel:

RewriteEngine On 

RewriteRule ^demo/(?:mypage1|mypage2)\.html$ - [L,NC] 

RewriteRule ^demo/([\w-]+)\.html$ demo/?section=$1 [QSA,L,NC] 

Dies setzt voraus, dass demo/ Verzeichnis keine .htaccess hat Innerhalb.

Allerdings, wenn Sie schauen nur auf Ausschluss aller vorhandenen Dateien aus dieser Rewrite dann Sie nur eine einzige Regel wie folgt aus:

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^demo/([\w-]+)\.html$ demo/?section=$1 [QSA,L,NC] 
+0

Danke für die Antwort. Aber was, wenn ich 10 oder 12 Sonderfälle habe? Das wird eine lange Schlange sein. Wäre das der beste Weg? Oder lieber eine Regel pro Sonderfall definieren? – Alvaro

+0

Selbst für 11/12 Spezialfälle ist es in Ordnung, sie alle in einer einzigen Regel zu halten. Wenn Sie jedoch zu viele Sonderfälle haben, können Sie mehrere Ausnahmeregeln auflösen. – anubhava

+0

Ich frage mich ... konnte ich nicht etwas wie 'RewriteCond% {REQUEST_FILENAME} -f' verwenden, damit ich mich davor bewahren kann, die Rewrite-Regel für die existierenden Dateien zu schreiben? Die "Sonderfälle"? – Alvaro

Verwandte Themen