2014-12-29 109 views
0

我想從example.com/profile.php?UserName=xxxx重定向到xxxx.example.com xxxx包含a-z或0-9。 我已經嘗試了一堆代碼來做到這一點(一些從這個網站),但他們都沒有工作,因爲我想它是。這裏是我當前的代碼:htaccess從php文件重寫爲子域

RewriteEngine on 
#this should redirect example.com/profile.php?UserName=x to x.site.com 
RewriteCond %{HTTP_HOST} !www.example.com$ [NC] 
RewriteCond %{HTTP_HOST} ^([a-z0-9-_]+).example.com [NC] 
RewriteRule (.*) %1/$1 [QSA,L] 

#if link does not contain subdomain add www 
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule (.*) http://www.example.com/$1 [R=301,L] 
+1

你想到'xxxx.example.com'來顯示「www.example.com/profile.php?UserName = xxxx」的內容。對? – undone

+0

是的......但是xxxx正在改變,只能包含英文的小寫字母和數字。 – shnisaka

+0

如果刪除最後兩條重寫規則並嘗試它,會發生什麼情況? – Ben

回答

0

你需要把你的所有重定向規則以前內部路由規則。與R標誌重定向的規則。

RewriteEngine on 

# This redirects the browser to include the "www" 
RewriteCond %{HTTP_HOST} ^example.com [NC] 
RewriteRule (.*) http://www.example.com/$1 [R=301,L] 

# This redirects the browser when profile.php is directly accessed 
RewriteCond %{THE_REQUEST} \ /+profile\.php\?UserName=([a-z0-9-_]+) 
RewriteRule^http://%1.example.com/? [L,R] 

# this internally routes the XXX.example.com to the profile.php script 
RewriteCond %{HTTP_HOST} !www.example.com$ [NC] 
RewriteCond %{HTTP_HOST} ^([a-z0-9-_]+).example.com [NC] 
RewriteRule ^$ /profile.php?UserName=%1 [QSA,L] 
+0

訪問時:example.com/profile.php?UserName=something 我被重定向到:http://something.example.com/?UserName=something。如何刪除?UserName =東西 – shnisaka

+0

something.example.com不顯示頁面example.com/profile.php?UserName=我試圖切換到R = 301的東西,它仍然在做同樣的事情。 – shnisaka