使您的網站被配置爲接受你已經設定了不同的子域的假設(如何配置這可以有所不同,從在httpd.conf的VirtualHost
一部分,建立一個ServerAlias
使用mod_proxy,等等),然後下面將做部分你想要什麼:
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$
RewriteRule (.*)\.php http://www.example.com/$0?cid=%1 [QSA]
基本上就會重寫任何.PHP請求,並添加?cid=X
,其中X
是域的第一部分......例如:http://john.example.com/test.php
成爲http://www.example.com/test.php?cid=john
。這一點我已經測試,似乎工作(對我來說)。
下一位是將子域映射到用戶ID。有多種方法可以做到這一點,但一個簡單的辦法是有一個文本文件僅列出映射:
john 123
joseph 102
oleg 179
然後,在你httpd.conf
(重要 - RewriteMap指令不會.htaccess
工作)你定義了這個作爲地圖:
RewriteMap useridmap txt:/path/to/useridmap.txt
這項工作已經完成,你可以使用映射規則中的之後,例如:
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$
RewriteRule (.*)\.php http://www.example.com/$0?cid=${useridmap:%1} [QSA]
如若將子域中的「john」替換爲查詢字符串中的「123」,依此類推。
警告:我目前無法試用,因爲我不在可輕鬆配置的服務器上。
這是不可能的,除非你的Apache配置中啓用了mod_proxy – anubhava
我的網站在Linode VPS上運行,我正在閱讀[link](http://httpd.apache.org/docs/ 2.2/mod/mod_proxy.html)模式代理docs權[/ link]現在,假設我將決定爲此目的啓用它,如何實現期望的結果? –
另外如何翻譯'約瑟夫'到'102'? – anubhava