2012-11-12 36 views
2

我有許多文章在foo.com/articles/重定向特殊的PHP文件到子域名

這樣的:

foo.com/articles/banana.php 
foo.com/articles/strawberry.php 

,並希望重定向搜索引擎優化子目錄是這樣的:

banana.foo.com 
strawberry.foo.com 

編輯

當我鍵入(banana.foo.com)顯示我(foo.com/articles/banana.php)。

只是展示,而不是真的重定向

我不能交友,因此(banana.foo.com)創造了許多子域名不要交友

+0

這可能是你在找什麼:http://serverfault.com/questions/203780/troubleshooting-a-htaccess-wildcard-subdomain-rewrite/203804#203804 –

+0

@Joshua Kaiser thx我在你的這篇文章中工作 – Sinac

回答

1

建立在.htaccess你可以這樣做有以下:

RewriteRule ^foo.com/articles/([a-z0-9-]+).php $1.foo.com [PT,L] 

您需要安裝mod rewrite,並且您需要在DNS服務器中設置通配符子域。 http://en.wikipedia.org/wiki/Wildcard_DNS_record

+0

對不起,你能寫完整的代碼嗎?如何重寫? – Sinac

+0

什麼是通配符子域以及如何設置它? thx – Sinac

+0

這是完整的代碼。它會進入你的.htaccess文件。通配符子域是通過在您設置了DNS的記錄中使用星號來實現的。見http://en.wikipedia.org/wiki/Wildcard_DNS_record –

1

你可以這樣做:

if (preg_match('#.*/articles/([a-z0-9\-_]+)\.php#i', $_SERVER['PHP_SELF'], $match)) { 
    header('Location: http://' . $match[1] . '.foo.com'); 
    exit; 
} 

記住任何其它輸出之前,粘貼此代碼,否則你會得到一個錯誤。

或通過.htaccessmod_rewrite啓用和RewriteEngine ON

RewriteRule ^.*/articles/([a-z0-9\-_]+)\.php$ http://$1.foo.com [R,L] 

編輯

相反會是這樣的:

if (preg_match('#^http://([a-z0-9\-_]+)\.foo\.com.*$#i', $_SERVER['HTTP_HOST'], $match)) { 
    header('Location: http://foo.com/articles/' . $match[1] . '.php'); 
    exit; 
} 

而且隨着.htaccess

RewriteCond %{HTTP_HOST} ^([a-z0-9\-_]+).foo.com$ 
RewriteRule .* http://foo.com/articles/%1.php [R,L] 
+0

這是失敗的網址:foo.com/articles/banana.php.foo.com – Sinac

+0

是的,我只是更新我的代碼!我忘了http://之前:)現在就試試吧! – jan267

+0

是的,它的工作和重定向目錄到子域,但我希望當調用子域顯示diretory。 – Sinac

3

把這個在您的.htaccess文件(不要忘記,以取代 「YOURDOMAIN」 與您的域名)當你請求

banana.foo.com 

結果會

Options +FollowSymLinks 
Options +SymLinksIfOwnerMatch 

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(.*).yourdomain.com$ 
RewriteRule (.*) yourdomain.com/articles/%1.php [L] 

現在從

foo.com/articles/banana.php 

等等

+0

1.我可以在cpanel中爲每篇文章創建子域,你認爲它會起作用嗎? 2.需要重寫嗎?你能寫完整的代碼嗎? plz – Sinac

+0

@Sinac沒有必要爲每篇文章創建子域,上面的代碼實際上會限制你擁有子域。當然RewriteEngine應該開啓生效。我已經更新了完整的代碼,將它添加到您的.htaccess –

+0

謝謝,但它不是顯示文章/ banana.php,你可以檢查你的代碼,可能會寫一個錯誤的部分。 thx – Sinac