2012-05-11 78 views
2

我需要http://profiles.mysite.com/Me來顯示http://mysite.com/profile.php?user=Me會顯示什麼。.htaccess子域的文件夾查詢字符串

「我」根據用戶名而變化。它可以包含空格,不是真正的文件夾。

我不希望URL在地址欄中更改。

回答

3
  1. 啓用mod_rewrite的,並通過httpd.conf
  2. 的.htaccess在httpd.conf
  3. 啓用mod_proxy的

最後把這個代碼放到您的.htaccessDOCUMENT_ROOT目錄

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f [OR] 
RewriteCond %{REQUEST_FILENAME} !-d [OR] 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule^- [L] 

RewriteRule ^([^\s]+)\s([^\s]+)(\s.*)?$ $1+$2$3 [L] 
RewriteRule ^([^\s]+)\s $1 [L] 

RewriteCond %{HTTP_HOST} ^profiles\.mysite\.com$ [NC] 
RewriteRule ^(.*)$ http://mysite.com/profile.php?user=$1 [P,L,QSA] 

此答案現在將支持URI中的任何空格,因爲它是基於遞歸的規則。換句話說一個URI是這樣的:

http://profiles.mysite.com/foo bar baz 

將被代理:

http://mysite.com/profile.php?user=foo+bar+baz 

雖然網址在瀏覽器仍將:

http://profiles.mysite.com/foo&20bar%20baz 
+1

謝謝,但這會導致URL發生更改。 – Dav

+1

這就是說mod_proxy模塊沒有加載到httpd.conf中。請注意,我使用標誌'P'而不是標誌'R'。在這裏看到更多的細節:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html – anubhava

+1

得到它的工作,感謝你們倆! – Dav

1

把下面的代碼在.htaccess文件中的Web根目錄應該給你你需要的東西:

RewriteCond %{HTTP_HOST} ^profiles.mysite.com 
RewriteRule ^(.*)$ mysite.com/profile.php?user=$1 [L] 
+0

它說:「找不到 請求的URL /我在這臺服務器上找不到。「 – Dav

+1

將RewriteEngine置於.htaccess文件的頂部 - 當然,確保重寫模塊已加載到您的Web服務器中,並且AllowOverrides All命令是conf文件中Web目錄指令的一部分。 – Ansari

+0

這3件事都已經完成了。它仍然無法工作。 :( – Dav

相關問題