2011-12-28 38 views
-1

我需要在100,000個文件中重寫關鍵字(舊域名),我無法在數據庫中搜索並替換它。 也許有一個解決方案與htaccess?htaccess,在瀏覽器中搜索並替換關鍵字

老: 黃狗總是點擊次數www.domainname1.tld

新:

$bodytag = "the yellow dog clicks always www.domainname1.tld"; 

$bodytag = str_replace("domainname1.tld", "domainname2.tld", $bodytag); 
+0

你需要編輯HTML文件嗎?或者你希望Apache能夠即時更改內容?我不確定你在問什麼。 – lvmisooners 2011-12-28 23:01:21

+0

我希望在飛行中。 – 2011-12-28 23:03:02

回答

0

塗改文件: 黃狗點擊次數總是在PHP www.domainname2.tld

內容超出了.htaccess文件或Apache的範圍。

如果鏈接指向一個域,該域將被調用。您可以在該域上添加重定向(here's示例如何),但無法阻止該請求結束於舊域。

0

我不知道在htaccess中做到這一點的方法。有一些Apache模塊用於處理內容。例如,mod_substitute。

http://httpd.apache.org/docs/2.2/mod/mod_substitute.html

<Location /> 
    AddOutputFilterByType SUBSTITUTE text/html 
    Substitute s/www.domainname1.tld/www.domainname2.tld/ni 
</Location> 

信用:http://corpocrat.com/2008/09/19/install-apache-mod_substitute/

+0

很好的答案。但是這個mod在服務器上不活躍。 – 2011-12-28 23:24:30

0

我有類似的地方,我們搬到了很多文件到一個新的文件夾結構的情況下:

舊結構:

/css/ 
/images/ 
/js 
/*.html 

新結構:

/common/css/ 
/common/images/ 
/common/js 
/<various_html_folders/*.html 

問題是我的html文件通過相對路徑引用了css,js和圖像,並且新結構中我將不得不更新數千個這些引用。

所以我遇到了Apache中的mod_rewrite,它在發送給客戶端之前重寫了響應主體。我增加了以下4條線路到我的.htaccess文件,以改變所有href="css/href="/common/css/"

AddOutputFilterByType SUBSTITUTE text/html 
Substitute 's|href="css/|="/common/css/|i' 
Substitute 's|href="js/|="/common/js/|i' 
Substitute 's|href="images/|="/common/images/|i' 

瞧! CSS,javascripts和圖像像以前一樣工作,而不更新我的任何html文件。

聲明:我還沒有研究這樣做的性能影響。請記住,對於添加的每個Substitute行,將在整個響應正文上執行正則表達式。