我有兩個不同的事情,我想在兩種不同類型的URI的情況發生,但我似乎無法從執行在第一種情況下已經被接受停止第二種情況。的htaccess的RewriteCond REQUEST_URI檢測工作不
下面是一個例子:
abc.com
abc.com/asdf
abc.com/en/asdf
abc.com/zh-cn/asdf/asdf
都應該被引導到這個重寫規則:
RewriteRule ^(([a-z]{2})(-[a-z]{2})?)(/([a-z0-9-\./]*))?$ /index.php?lng=$1&tpl=$4 [QSA,L,NC]
第2部分:
abc.com/myadmin/
abc.com/myadmin/asdf
abc.com/myadmin/en/asdf
abc.com/myadmin/zh-cn/asdf/asdf
都應該被引導到這個重寫規則:
RewriteRule ^myadmin/(([a-z]{2})(-[a-z]{2})?)(/([a-z0-9-\./]*))?$ /myadmin/index.php?lng=$1&tpl=$4 [QSA,L,NC]
我一直在試圖達致這的方法是通過堆疊這樣的條件:
RewriteCond %{REQUEST_URI} !^/myadmin/
RewriteRule ^(([a-z]{2})(-[a-z]{2})?)(/([a-z0-9-\./]*))?$ /index.php?lng=$1&tpl=$4 [QSA,L,NC]
RewriteCond %{REQUEST_URI} ^/myadmin/
RewriteRule ^myadmin/(([a-z]{2})(-[a-z]{2})?)(/([a-z0-9-\./]*))?$ /myadmin/index.php?vlng=$1&tpl=$4 [QSA,L,NC]
但無論我做什麼,無論是規則還是執行。也許我這樣做是正確的和次級執行在PHP模板進一步向下發生,我不知道。我只需要知道我迄今爲止所做的工作是否看起來不錯,全部都是。
這似乎並沒有解決我的問題,即使我刪除第二組條件一起,我硬編碼到URI的/ myadmin/DIR它仍然在服務器的根目錄調用我的index.php文件。您的示例中的RewriteBase/critical是否正常工作?我以前從來沒有要求過它。 – Vince
首先,您必須確保上面的.htaccess直接位於DOCUMENT_ROOT下。請將您的完整.htaccess轉儲到您的問題中,並告訴我該代碼無法工作的URI,以便我也可以從我的結尾進行測試。 – anubhava
完整的.htaccess文件長度將近260行,並且位於DOCUMENT_ROOT中。如果我在嘗試訪問我的管理區域時使用上面提出的代碼,另一個RewriteRule也會被執行,我可以告訴,因爲另一個規則指向更新在我的站點公共端發現的cookie的代碼。我可以阻止我的Cookie更新的唯一方法是刪除您上面張貼的代碼的第二部分,這打破了我的網站的公共端。我需要另一種方式來做到這一點,這將不允許這兩個條件執行。 – Vince