簡體   English   中英

Apache .htaccess 子域重定向 + 路徑代理(規則鏈接?)?

[英]Apache .htaccess subdomain redirect + path proxying (rule chaining?)?

據我所知,我有一個棘手的問題;)

目前,我正在設置一個動態分支發布管道,該管道在管道處理期間已經采用了一個分支,並將其部署在我們的測試服務器上的保留文件夾(“分支”)中。 我們的通配符域指向它。

當前工作(在分支文件夾中):

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.domain\.com$ [NC]
RewriteRule ^ %1%{REQUEST_URI}/public [L,NC]

但現在的問題是,例如域my-new-testbranch-123.domain.com會重定向到my-new-testbranch-123.domain.com/my-new-testbranch-123/public/ 一方面可以(因為在那里找到了數據,但我想要一個合適的 url ,例如可以正確路由應用程序。所以我嘗試通過代理重寫 url。但沒有運氣。有什么建議嗎?

我的目標是使用子域 my-new-testbranch-123.domain.com/,而 url 中沒有任何附加路徑。 文檔根目錄位於 my-new-testbranch-123/public/。

我嘗試通過鏈接,但兩者都沒有像我想的那樣工作-.-:

RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.domain\.com$ [NC]
RewriteRule ^ %1%{REQUEST_URI}/public [NC,N]
RewriteCond %{REQUEST_URI} ([^.]+)/public
RewriteRule ^(.*)$ / [P]

RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.domain\.com$ [NC]
RewriteRule ^ %1%{REQUEST_URI}/public [NC,C]
RewriteCond %{REQUEST_URI} ([^.]+)/public
RewriteRule ^(.*)$ / [P]

(帶有 C 和 N 標志)

最好的,彎曲的

您的原始規則的問題是您在public之后沒有/ ,因為這是一個實際目錄,Apache 正在通過mod_dir模塊進行 301 重定向。

您可以使用此規則來解決此問題:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.domain\.com$ [NC]
RewriteRule ^ %1/public%{REQUEST_URI} [L]

確保在新瀏覽器中或通過命令行 curl 進行測試以避免舊瀏覽器緩存。

暫無
暫無

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

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