我有一個domain.com/index.php和一個友好的url規則來重定向domain.com/index.php?s=?要求。我使用帶有URL重寫附加組件的IIS webserver。如何使用IIS URL重寫來排除目錄?
上面的工作正常。然而,請求到管理員目錄有問題...
我也有domain.com/admin/cloud/index.php,有時需要獲取或發送數據(通過Ajax)。當規則處於活動狀態時,數據不可用,當我刪除上述規則時,則數據可用。
如何使用上面的url規則並排除(或到)domain.com/admin/ ..中的所有其他請求?
這是我目前的規則集:
<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
<match url="^index\.php$" />
<conditions>
<add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
<add input="{QUERY_STRING}" pattern="^s=([^=&]+)$" />
</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>
我嘗試過很多辦法,包括路徑信息...但沒有成功。也許有人可以提供一個提示?
謝謝!
你好,你在這裏提供兩條規則。哪個規則是弄亂/admin/cloud/index.php請求的規則? –
好問題。我不知道。看來IIS或URL重寫模塊會混淆請求。我現在分開了規則:1)檢查它是否包含「雲」和2)檢查是否必須重寫到index.php(因此從友好的URL到內部的URL)。如果檢查有效(在這種情況下,第二個規則不是必需的),則第一條規則會停止處理...由於某種原因,第一條檢查不是繞過問題的解決方案。 [..] – Arjen
[..]只有第二條規則,友好的url正在工作,但不是管理部分。只有第一個規則管理部分工作,但不友好的網址部分。有時候,它確實有效......但是在幾分鐘或幾小時後,具有兩個分開的規則的解決方案不再有效。我不知道在哪裏找到「真正的問題」。 – Arjen