Dot-Htaccess

Apache 重寫:sub.DOM1.TLD1/path > sub.DOM2.TLD2/path

  • June 18, 2019

… MAYBE-dup 答案確實解決了我的問題,但問題沒有。

做兩件事:

  1. 保留子域之前
  2. 之後保持路徑

.htaccess我在 SE 或網路上的其他地方都找不到 ONE或 Apache 配置:

通過 Apache.htaccess重寫,轉發舊域,但保持*兩者相同subdomain*AND path/after

從:

samesubdomain.domain1.tld1/same/path

到:

samesubdomain.domain2.tld2/same/path

我有很多子域和尾隨地址。我正在遷移一個舊網站,但需要我的舊訂閱者和他們的頁面仍然可以在新域上工作。


非但關閉重複:(答案解決了我的問題,但問題本身並沒有描述我的問題,但這也解決了我的問題。)

將萬用字元子域重定向到不同域上的相同子域


感謝MAYBE-dup answer,對於子域,我目前有:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+\.)?domain1.com$ [NC]
RewriteRule ^ http://%1domain2.com%{REQUEST_URI} [R=301,L]

…現在,我需要在the/path不與此程式碼衝突的情況下添加一半。

儘管連結的問題沒有具體說明這一點,但程式碼實際上也複製了 URL 路徑(和任何查詢字元串)。儘管無可否認,答案沒有任何解釋。

假設:

  • 總是有一個子域。因此,您不想重定向域頂點。IE。domain1.tld1(沒有子域)不會重定向到domain2.tld2.

在根.htaccess文件頂部附近:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^([^.]+)\.domain1\.tld1 [NC]
RewriteRule (.*) https://%1.domain2.tld2/$1 [R=302,L]

RewriteCond指令從請求中擷取子域。替換中的%1反向引用是對擷取的子域(即。)的反向引用。RewriteRule ([^.]+)

反向引用包含由模式$1擷取的 URL 路徑,即。.RewriteRule (.*)

請注意,我特別省略了CondPattern$上的尾隨(字元串結尾錨)以匹配以點結尾的 FQDN。

任何查詢字元串都原封不動地傳遞。

請注意,這目前是 302(臨時)重定向。始終使用 302 進行測試以避免記憶體問題。如果您之前使用 301s 進行過測試,那麼您需要確保您已清除瀏覽器記憶體。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+\.)?domain1.com$ [NC]
RewriteRule ^ http://%1domain2.com%{REQUEST_URI} [R=301,L]

…現在,我需要在不與此程式碼衝突的情況下添加 /path 一半。

程式碼已經包含 URL-path 部分。這就是替換字元串%{REQUEST_URI}中的部分。伺服器變數包含完整的 URL 路徑。這只是做與上面相同的事情的另一種方式——我使用了反向引用。(請注意,伺服器變數包含斜杠前綴,而我使用的反向引用不包含,因此替換字元串中的斜杠不同。)RewriteRule REQUEST_URI``$1``REQUEST_URI

此程式碼在.com.

請注意,此解決方案使子域可選。它將重定向domain1.com(無子域)到domain2.com.

引用自:https://serverfault.com/questions/971829