我一直在負責清理30,000所以從舊網站的重新設計和開發的結果,留下的網址錯誤。301重定向在.htaccess 30,000錯誤
我通常使用的.htaccess要做到這一點,但我懷疑這將是明智的,有30000 301重定向的.htaccess文件裏面!
有一些你使用什麼樣的方法來解決這個問題呢?
在此先感謝。
我一直在負責清理30,000所以從舊網站的重新設計和開發的結果,留下的網址錯誤。301重定向在.htaccess 30,000錯誤
我通常使用的.htaccess要做到這一點,但我懷疑這將是明智的,有30000 301重定向的.htaccess文件裏面!
有一些你使用什麼樣的方法來解決這個問題呢?
在此先感謝。
感謝您的幫助球員。我已經從freedev執行了建議的操作過程,但在Apache中創建了一個單獨的配置文件。
在我加入httpd.conf文件:
# Map settings
Include "conf/extra/map.conf"
的map.conf文件:
RewriteEngine On
RewriteEngine on
RewriteMap url_rewrite_map txt:conf/map.map
RewriteCond ${url_rewrite_map:$1|NOT_FOUND} !NOT_FOUND
RewriteRule ^(.*) http://website.com/${url_rewrite_map:$1} [R=301]
的map.map文件的格式爲:
/oldname/ /newname
我已經添加了很多重定向的網址,並且效果非常好,它不會像服務器那樣對服務器產生巨大影響添加到 。htaccess
創建一個PHP頁面作爲404處理器進行操作。它應該檢查傳入的URL,檢查它是否應該從舊頁面映射到新頁面,然後發出301.如果沒有映射,則呈現404。 .htaccess,你去了。 IIRC這是在IIS7引入URL重寫而不需要第三方DLL之前,Wordpress用於處理IIS上的「乾淨」URL的方式。
我做了一個重定向類,它是404頁,將檢查數據庫中是否有一個有效的頁面,301重定向到,而是其重定向到給予404頁上。如果它無法解決這個問題,它會在數據庫中將其標記爲404頁面,因此稍後可以修復它。
在這裏,你可以與Apache httpd的
RewriteMap escape int:escape
RewriteMap lowercase int:tolower
RewriteMap my_redir_map txt:map_rewrite.txt
RewriteCond ${my_redir_map:${lowercase:${escape:%{HTTP_HOST}%{REQUEST_URI}}}} ^(.+)$
RewriteRule .* http://%1 [R=301,L]
做我通常直接使用這個重寫規則的Apache httpd配置文件裏。
裏面的map_rewrite.txt文件你有重定向在以下格式列表中的製表符分隔的文件:
www.example.it/tag/nozze www.example.it/categoria/matrimonio
www.example.it/tag/pippo www.example.it/pluto
www.example.it/tag/ancora www.google.com
會容易得多,如果你能概括的方法,因爲重定向有一個共同的模式。但是,如果沒有,在這種情況下,您只需要將重定向的url添加到列表中。 小心研究RewriteMap指令配置,因爲你也可以寫列表爲不同的格式,例如像一個數據庫表。
請注意這一點:我添加了escape
和lowercase
,這是因爲我需要編寫的url需要重音符號。如果您的網址沒有重音符號,則可以將兩者都刪除。
如果你想在PHP中實現這些重定向,這裏的代碼,你需要:
<?php
$dest_url = "http://example.com/path...";
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$dest_url);
我想知道答案呢!特別是當你使用smarty模板 – shnisaka
你可以使用正則表達式表達這個...只是像這個問題:http://stackoverflow.com/questions/3077705/htaccess-regex-rewrite-rule – sleepsort
我發現了一些模式和不同的場景,然後使用正則表達式來覆蓋它們。你可以發表一些例子嗎? –