簡體   English   中英

.htaccess將[虛擬]子域重寫為[虛擬]文件夾

[英].htaccess rewrite [virtual] subdomain to [virtual] folder

我有一個包含虛擬頁面的網站,其中任何請求都以這種方式重寫到索引頁面:

RewriteEngine On  
RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  
RewriteRule ^.*$ ./index.php

即,在我解析http://www.example.com/job/edit時將其重寫為http://www.example.com/index.php/job/edit 效果很好。

現在,我需要處理每個虛擬子域,以使http://user1.example.com/job/edit變為http://www.example.com/index.php/user1/job/edit

我在CPanel中添加了通配符子域( *.example.com ),因此每個子域都指向域文件夾(沒有它,我在每個子域上都沒有找到“服務器”)。

我嘗試了在此找到的每個示例,但無法使它們正常工作。 如果我在索引頁上打印$_SERVER['REQUEST_URI'] ,我總是得到最后一部分,而不是子域(即/job/edit )。

有什么辦法嗎?

提前致謝。

編輯:我已經有一個解決方法。 $_SERVER['HTTP_HOST'] var包含整個域,即user1.example.com 我可以用PHP解析它並提取子域,但是我認為它應該是一種更優雅的方法。

我做過一樣的事情。

創建一個名為“用戶”的文件夾

創建一個index.php來處理對用戶函數的調用

在路由的Httpd.conf中添加虛擬主機

* .example.com到路徑/ public_html / user

<VirtualHost 0.0.0.0>
ServerAlias *.example.com
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/yourdoma/public_html/user
ServerName yourdomain.com
User yourdoma
Group yourdoma
BytesLog /usr/local/apache/domlogs/yourdomain.com-bytes_log
CustomLog /usr/local/apache/domlogs/yourdomain.com combined
ScriptAlias /cgi-bin/ /home/yourdoma/public_html/joe/cgi-bin/
</VirtualHost>

現在,所有呼叫將路由到用戶文件夾。

在用戶文件夾中添加一個Htaccess文件以重寫基本路徑

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM