2015-08-31 57 views
0

我一直在這裏工作了幾個小時,但無法使其工作。我在這個可以工作的.htaccess文件中有其他重定向。Mod重寫將一個文件重定向到另一個域上的文件

我需要重定向,如下所示。

mydomain.com/dir/subdir/myfile.phpmyotherdomain.com/dir/my_index.php

注意mydomain.commyotherdomain.com都指向相同的根目錄。

這是我的代碼。

RewriteCond %{HTTP_HOST} ^(www.)?postle.com$ 
RewriteCond %{REQUEST_URI} !^/pi_www/hardface/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /pi_www/hardface/$1 
RewriteCond %{HTTP_HOST} ^(www.)?hardfacetechnologies.com$ 
RewriteRule ^(/)?$ postle_hft/index_hft.php [L] 

我已經厭倦了所有這個我可以想到的,沒有任何作品的排列組合。我真的很感謝一些幫助。

+0

此htaccess位於何處?它在'/ dir /'裏面嗎? – anubhava

+0

它在dir的父目錄中,它是等同於mydomain.com的webroot。 – noCodeMonkeys

回答

1

在你的文檔根.htaccess文件,請嘗試:

RewriteCond %{HTTP_HOST} =mydomain.com 
RewriteRule ^dir/subdir/myfile\.php$ http://myotherdomain.com/dir/my_index.php [R=302,L] 

指令的順序很重要。這應該在您的規範www重定向之後,但在任何內部重寫之前以及在可能發生衝突的任何重定向之前出現。

這也假定您的規範URL是裸露的域(即不是www子域) - 就像您的問題中的示例一樣。爲了配合裸域 www子域(並使其不區分大小寫),然後更改RewriteCond指令:

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain.com$ [NC] 

更改臨時(302)重定向到永久(301)當你確定它的工作OK。 (301個重定向是由瀏覽器緩存,所以使得測試麻煩。)

+0

我將該代碼先放在.hataccess中,然後放到最後,它不起作用。舊文件仍然出現。 (當然我清空了緩存)。 – noCodeMonkeys

+0

您是通過'www'子域還是裸露的域訪問網站?我的答案中的代碼假設裸露的域名,就像你的例子。如果你已經有一些工作重定向,那麼這個規則是在錯誤的地方和/或有衝突,或者有一些信息缺少問題。您可能需要發佈完整的.htaccess,以便我們可以更好地觀看。 – MrWhite

+0

我沒有意識到你的代碼是裸露的域名,但現在我明白了,這很明顯。我用你的代碼沒有www,它工作正常。我最終使用RewriteRule從第一篇文章中使用RewriteCond,以便無論url是否包含www。非常感謝您的回答。以下是其他人的完整代碼。或許您可以將其作爲答案發布。 RewriteCond%{HTTP_HOST} ^(www \。)?mydomain \ .com $ [NC] RewriteRule^mydir \ mysubdir \ myfile \ .php $ http://myotherdomain.com/dir/my_index。php [R = 302,L] – noCodeMonkeys

1

您可以使用此規則/dir/subdir/.htaccess

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC] 
RewriteRule ^myfile\.php$ http://myotherdomain.com/dir/my_index.php [R=302,NC,L] 

如果你想避免再外部重定向:

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC] 
RewriteRule ^myfile\.php$ /dir/my_index.php [NC,L] 

也應該作爲兩個域指向相同的站點根目錄。

+0

我把代碼放在我的htaccess文件中,並清除緩存,但舊文件仍然出現。我很茫然。 – noCodeMonkeys

+0

正如答案中的建議,你把它放在'/ dir/subdir/.htaccess'中嗎? – anubhava

+0

.htaccess必須位於根目錄,因爲還有其他重定向 – noCodeMonkeys

相關問題