0
背景:
我有一個Rails應用程序,其中我的主頁是產品/索引。301重定向,但不包括命名空間
我在.htaccess文件中使用以下代碼將請求從產品/重定向到root。
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*products\ HTTP/
RewriteRule ^(.*)products /$1 [R=301,L]
這很好。 /產品請求重定向到根目錄,並且對產品/ [id]的請求仍然按照我的意願路由到產品/ ID。
問題:
唯一的問題是,我有與命名空間/管理員的管理部分。並在該管理部分,我有/產品。
所以,現在當我的管理員用戶在網站的管理部分,他點擊「產品」鏈接,他應該被路由到網址/管理/產品。然而,重寫規則被重定向他URL /管理
問題
如何排除來自重定向代碼我上面列出的管理前綴?
我想在正則表達式的某個地方我應該可以添加如下內容:[^ admin] 但我無法獲得任何工作。
謝謝。
幾乎就是這樣。它只需要一個小小的調整:RewriteCond%{REQUEST_URI}!^(。*)admin – MikeH 2010-11-13 10:28:20
你的調整使得這種自我毀滅的大量表達式。這個上下文中的'^'字符是從行的開頭匹配的。你的調整現在匹配行的開始,然後是任意數量的隨機字符。如果您的管理員是在網址開頭的那個,那麼要麼與開頭的內容匹配,要麼放棄'^'並且匹配請求中的任何地方。換句話說'^(。*)'完全等同於沒有任何東西。 – Caleb 2010-11-13 10:38:20