2013-12-20 11 views
9

Ich habe eine Domain/index.php und eine freundliche URL-Regel, um domain.com/index.php?s= umzuleiten? Anfragen. Ich benutze den IIS Webserver mit dem URL Rewrite Add-On.Wie kann ein Verzeichnis mit IIS-URL-Umschreibung ausgeschlossen werden?

Oben funktioniert gut. Es gibt jedoch ein Problem mit Anfragen an das Admin-Verzeichnis ...

Ich habe auch domain.com/admin/cloud/index.php, die manchmal benötigt wird, um Daten zu erhalten oder zu senden (über Ajax). Wenn die Regel aktiv ist, sind die Daten nicht verfügbar. Wenn ich die obige Regel lösche, sind die Daten verfügbar.

Wie kann ich die obige URL-Regel verwenden und alle anderen Anfragen innerhalb (oder unter) domain.com/admin/ .. ausschließen?

Dies ist mein aktueller Regelsatz:

<rule name="RedirectUserFriendlyURL1" stopProcessing="true"> 
    <match url="^index\.php$" /> 
    <conditions> 
     <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" /> 
     <add input="{QUERY_STRING}" pattern="^s=([^=&amp;]+)$" /> 
    </conditions> 
    <action type="Redirect" url="{C:1}" appendQueryString="false" /> 
</rule> 
<rule name="RewriteUserFriendlyURL1" stopProcessing="true"> 
    <match url="^([^/]+)/?$" /> 
    <conditions> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="index.php?s={R:1}" /> 
</rule> 

ich viele Möglichkeiten ausprobiert, darunter Weg info ... aber ohne Erfolg. Vielleicht kann jemand einen Hinweis geben?

Danke!

+0

Hallo, Sie geben hier zwei Regeln an. Welche Regel verletzt die Anfrage /admin/cloud/index.php? –

+0

Gute Frage. Ich habe keine Ahnung. Es scheint, dass IIS oder das URL-Rewrite-Modul Anfragen durcheinander bringt. Ich habe jetzt die Regeln aufgeteilt: 1) überprüfe, ob es "cloud" enthält und 2) ob es in index.php (also von freundlicher URL zu interner URL) umgeschrieben werden muss. Die erste Regel stoppt die Verarbeitung, wenn die Prüfung gültig ist (in diesem Fall ist die zweite Regel nicht notwendig) ... Aus irgendeinem Grund ist die erste Prüfung nicht die Lösung, um das Problem zu umgehen. [..] – Arjen

+0

[..] Mit nur der zweiten Regel funktioniert die freundliche URL, aber nicht der Admin-Teil. Mit nur der ersten Regel funktioniert der Admin-Bereich, aber nicht der freundliche URL-Teil. Manchmal funktioniert es ... aber nach ein paar Minuten oder Stunden funktioniert die Lösung mit zwei getrennten Regeln nicht mehr. Ich weiß nicht, wo ich das "echte Problem" finde. – Arjen

Antwort

22

Werfen Sie einen Blick here Sie könnten diese Regel hinzufügen, wenn eine Anfrage, die Sie nicht verarbeiten möchten, kommt, können Sie es ignorieren und die Verarbeitung beenden.

Es sollte zuerst platziert werden, damit diese Regel vor den anderen beiden ausgeführt wird.

<rule name="block" stopProcessing="true"> 
    <match url="^admin/cloud/index.php$" /> 
    <action type="None" /> 
</rule> 
+5

DANKE DANKE – JajaDrinker

+0

Es funktioniert nicht auf meiner asp.net mvc-Anwendung – Shahdat

+0

@Shahdat Diese Regeln werden angewendet, bevor die Anfrage die ASP.NET-Engine trifft, so sollte es funktionieren. Stellen Sie sich vor, eine Frage zu stellen und den Link hier zu setzen, damit ich einen Blick darauf werfen kann. –

Verwandte Themen