[英]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.