簡體   English   中英

301重定向,與RewriteRule沖突

[英]301 redirect, conflicting with RewriteRule

我們今天做了一些維護,並將我們的網絡論壇從/ forums移到了域的根文件夾中。

我們在.htaccess文件中添加了重定向301:

Redirect 301 /forums/ http://www.ourforums.com/

但是,我們曾經有一些包含重復/論壇文件夾的鏈接。 即www.ourforums.com/forums/forums/forum.1

顯然,從上面重定向現在導致/forum.1,其中不存在odes。 我希望舊鏈接實際上指向www.ourforums.com/boards/forum.1。 我試圖使用類似的東西:

RewriteRule ^/forums/forums http://www.ourforums.com/boards/ [NC,R=301,L]

無論我嘗試了什么,Redirect似乎都取代了我放在同一個文件中的任何RewriteRules,無論我是否將它們放在Redirect之前。

我有什么方法可以確保在重定向之前處理RewriteRule?

這是因為mod_alias( Redirect指令)和mod_rewrite( RewriteRule指令)在您的情況下相互沖突。 它們都在URL文件映射處理管道中發揮作用,其中URI被處理,重寫,標記,並最終映射到資源和響應。 您有一個正在應用的Redirect規則,並且響應被標記為重定向。 關於Redirect指令的事情是它將2個路徑節點連接在一起,這意味着:

/forums/

連接到

http://www.ourforums.com/

因此, /forums文件夾下面的任何內容最終都會被重定向。 這就是為什么它正在捕捉^/forums/forums

您可以堅持使用mod_rewrite或使用排除/forums/forumsRedirectMatch

RewriteRule ^/forums/forums(.*)$ http://www.ourforums.com/boards$1 [NC,R=301,L]
RewriteRule ^/forums/(.*)$ http://www.ourforums.com/$1 [NC,R=301,L]

要么

RedirectMatch 301 ^/forums/(?!forums)(.*)$ http://www.ourforums.com/$1

手動添加像這樣的重定向語句似乎對我有用:

Redirect /forums/forums/forum.1 http://www.ourforums.com/boards/forum.1

我有一個類似的問題。 我試圖從cpanel添加重定向,而我已經在我的.htaccess文件中寫了一些重寫規則。 我得到的錯誤是“沒有標記”我最終做的是保留了我現有規則的副本並清理了.htaccess。 然后去添加了我需要的所有重定向,從cpanel,然后最后在文件的末尾放回我自己的重寫規則。 這對我有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM