2011-09-12 181 views
0

我會簡要通知您我在做什麼以及在哪裏需要您的幫助。使用htaccess重寫網址

我正在建設博客託管網站。我完成了CMS,現在我正在做用戶頁面。

我的想法是創建.htaccess規則,以便每個用戶和博客所有者都擁有自己的博客URL,如:XXX.bloghost.com,其中XXX是博客名稱或博客所有者名稱。

只是提一提,我會用2個參數中的URL所以這裏有網址的範例:

XXX.bloghost.com -> www.bloghost.com/index.php?user=XXX 

XXX.bloghost.com/NEWS -> www.bloghost.com/index.php?user=XXX&category=NEWS 

XXX.bloghost.com/NEWS/SAMPLE -> www.bloghost.com/index.php?user=XXX&category=NEWS&post=SAMPLE 

這裏是我當前的.htaccess文件(修訂版):

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !www.bloghost.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).bloghost.com [NC] 
RewriteRule (.*) %2/$1 [L] 

RewriteRule (.+)/(.+)/(.+) blog.php?blog_id=$1&category=$2&post=$3 [L,QSA] 
RewriteRule (.+)/(.+) blog.php?blog_id=$1&category=$2 [L,QSA] 
RewriteRule (.+) blog.php?blog_id=$1 [L,QSA] 


ErrorDocument 404 /error.php 

我會真的需要一些幫助。我嘗試並遵循了幾個教程,但沒有運氣。

另外,這個.htaccess是否可以阻止或重定向所有錯誤輸入或不存在的URL到某個頁面?

回答

3

首先,你必須配置子域通配符

ServerAlias www.domain.com domain.com *.domain.com 

而且可以肯定的是,配置通配符DNS了。不是使用這樣的:

RewriteCond %{HTTP_HOST} !www.domain.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+).domain.com [NC] 
RewriteRule (.*) %2/$1 [QSA] 

所以這個頁面後http://some.domain.com/news會去http://www.domain.com/some/news 而不是過程的網址像往常一樣(只是舉例):

RewriteRule (.+)/(.+)/(.+) index.php?user=$1&category=$2&post=$3 [L,QSA] 
RewriteRule (.+)/(.+) index.php?user=$1&category=$2 [L,QSA] 
// and so on 

但我認爲,第二部分應用php路由系統處理。

+0

謝謝真我,以後我會嘗試這一點,結果後在這裏...乾杯M8 – Ivan

+0

我只是想你sugestion,但沒有運氣 的URl www.bloghost.com/XXX/NEWS就像一個魅力,但像XXX.bloghost.com URL給我「服務器找不到」錯誤。這是我的.htaccess文件:(WWW) 選項+的FollowSymLinks 選項+指標 RewriteEngine敘述在 RewriteBase/ 的RewriteCond%{HTTP_HOST} www.otvorko.net $ [NC] 的RewriteCond%{HTTP_HOST} ^? (。*)/(。+)/(。+)博客。[[a-z0-9 - ] +)otvorko.net [NC] RewriteRule(。*)%2/$ 1 [L] RewriteRule RewriteRule(。+)/(。+)blog.php?blog_id = $ 1&category = $ 2 [L,QSA] RewriteRule(。+)博客。 php?blog_id = $ 1 [L,QSA] – Ivan

+0

您是否爲通配符正確配置了DNS和Web服務器(Apache)? 'ServerAlias www.otvorko.net dotvorko.net * .otvorko.net'爲apache和類似'* .otvorko.net一個111.222.33.44'在域dns記錄? – atma

0

@atma已經處理了真正的重定向。只需要在.htaccess中進行錯誤處理的快速插件:

ErrorDocument 404 /error.php 

簡單!任何404錯誤將被定向到bloghost.com/error.php。替換您的路徑和頁面/腳本以顯示錯誤。