Apache-2.2

將目錄重定向到新域而不觸及主網站

  • September 7, 2013

我想將https://mineyourmind.de/forum>重定向到<https://mineyourmind.net/forum

我可以用Google搜尋的每條重寫規則都不起作用,他們還重定向了主域(mineyourmind.de)。

我重定向 http://www。和 http:// 和 https:// 通過 apache 站點配置。

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.mineoyurmind\.de$ [NC]
RewriteRule (.*) https://mienoyurmind.de%{REQUEST_URI} [R=301,L]

論壇目錄的 .htaccess 如下所示:

ErrorDocument 401 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 500 default

&lt;IfModule mod_rewrite.c&gt;
   RewriteEngine On

   #   If you are having problems with the rewrite rules, remove the "#" from the
   #   line that begins "RewriteBase" below. You will also have to change the path
   #   of the rewrite to reflect the path to your XenForo installation.
   #RewriteBase /xenforo

   #   This line may be needed to enable WebDAV editing with PHP as a CGI.
   #RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

   RewriteCond %{REQUEST_FILENAME} -f [OR]
   RewriteCond %{REQUEST_FILENAME} -l [OR]
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteRule ^.*$ - [NC,L]
   RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
   RewriteRule ^.*$ index.php [NC,L] 
&lt;/IfModule&gt;

我應該將 mineyourmind.de/forum 的重寫添加到 mineyourmind.net/forum 到 apache 站點配置或 htaccess 中,這應該是什麼樣子?


編輯:

我試過這樣:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.mineyourmind\.de$ [NC]
RewriteRule (.*) https://mineyourmind.de%{REQUEST_URI} [R=301,L]
RewriteRule (/forum.*) https://mineyourmind.net/$1 [R=301,L]

像這樣

RewriteEngine On
RewriteRule (/forum.*) https://mineyourmind.net/$1 [R=301,L]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.mineyourmind\.de$ [NC]
RewriteRule (.*) https://mineyourmind.de%{REQUEST_URI} [R=301,L]

兩者都不起作用

這是重定向以“/forum”開頭的每個請求的規則。

RewriteRule (/forum.*) https://mineyourmind.net/$1 [R=301,L]

這意味著“當 URI 以“/forum”開頭時,您應該擷取整個 URI,並將主機名替換為 mineyourmind.de。$1意思是“您剛剛匹配的內容”。

編輯:

為確保您不會重定向名稱中以“forum”開頭的任何文件,您可能需要兩條規則。

# To match /forum only:
RewriteRule ^/forum$ https://mineyourmind.net/$1 [R=301,L] 
# To match any URI under the /forum directory, e.g. "/forum/" and "/forum/someotherfile.html"
RewriteRule ^/forum/(.*) https://mineyourmind.net/forum/$1 [R=301,L]

編輯結束

您是否應該在 .htaccess 或 apache 站點配置中執行此操作,取決於您的系統是如何設置的,即您儲存其他站點特定文件的位置。一般來說,使用 .htaccess 會有一點成本,因為 apache 會為每個新請求重新讀取 .htaccess 文件,而站點配置只會在伺服器重新啟動時讀取。但作為一項規則,我會盡可能將所有重寫配置放在同一個文件中,以使其更易於管理。無論是 .htacces、virtualhost.conf 還是 httpd.conf,都取決於您。

您還應該閱讀RewriteRule 文件,其中解釋了在什麼情況下您需要/在 RewriteRule 中包含首字母。

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