0
我試着以取代舊式的URL到新的用戶友好只能用的.htaccess重定向循環問題:舊式的網址,以新的用戶友好的URL
例如domain.com/dir/?id=101 -> domain.com/dir/robots
應該由用戶或searchbots舊鏈接(?id=...)
訪問並重定向到新的一個有301狀態碼,當然應該由新的URL來訪問。
我的.htaccess:
Options +FollowSymlinks
RewriteEngine on
RewriteBase /dir/
RewriteRule ^robots/?$ ?id=101 [L]
RewriteCond %{QUERY_STRING} ^id=101$
RewriteRule ^$ robots? [R=301,L]
它返回重定向循環,效果顯着。
不幸的是,我不能修改CMS引擎,所以唯一的解決方案是使用.htaccess規則來做到這一點。
我google了很多,但沒有找到任何工作的解決方案,這個問題。
任何想法?
謝謝!
解決
好吧,隨機魔法一點點,我發現的解決方案:在條件RewriteCond %{ENV:REDIRECT_STATUS}
沒有空間!=200
後:
RewriteRule ^robots/?$ ?id=101 [L]
RewriteCond %{ENV:REDIRECT_STATUS} !=200
RewriteCond %{QUERY_STRING} ^id=101$
RewriteRule ^$ robots? [R=301,L]
重要。與空間它不工作。
對於你的第二規則(301重定向) - 增加一個條件:只有當URL尚未改寫重定向 - 檢查'%{} THE_REQUEST'變量(它應該包含'GET/ID = 101 HTTP/1.1'或類似的東西)。現在你知道要搜索什麼了。 – LazyOne