将目录重定向到新域名,无需触及主网站

将目录重定向到新域名,无需触及主网站

我想重定向https://mineyourmind.de/forumhttps://mineyourmind.net/forum

我在 Google 上搜索到的所有重写规则都不起作用,他们还重定向了主域名(mineyourmind.de)。

我正在通过 apache siteconfig 重定向 http:// www. 和 http:// 和 https://。

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

<IfModule mod_rewrite.c>
    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] 
</IfModule>

我是否应该将 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]

两者都不起作用

答案1

这里有一条规则,用于重定向每个以“/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 中包含首字母。

相关内容