如何使用 WordPress Multisite 重定向特定站点的主页

How to redirect home page on a specific site with WordPress Multisite

我有一个 WordPress 站点并安装了 Multisite。 WordPress 位于根目录(如 example.com/)。我的其他站点(多站点)就像 portfolio.example.com.

我不想让我的主页成为我的 WordPress 网站。我希望它成为我创建的主页(使用我的 CSS 和我的 JS)并且它位于 example.com/index.

中的一个文件夹中

我尝试使用 Redirect 301 /index.php https://example.com/indexRedirect 301 https://example.com https://example.com/index 进行重定向,但它会将我所有的 index.php 重定向到 example.com/index,所以即使 portfolio.example.com 也变成了 example.com/index 因为 WordPress 的结构。

如何仅将主页 example.com 重定向到 example.com/index,同时将 portfolio.example.com 重定向到 portfolio.example.com

我希望这是清楚的...谢谢!

这是我的 .htaccess(它是由 WP + 我的重定向行生成的):

# BEGIN WordPress
# Les directives (lignes) entre « BEGIN WordPress » et « END WordPress » sont générées
# dynamiquement, et doivent être modifiées uniquement via les filtres WordPress.
# Toute modification des directives situées entre ces marqueurs sera surchargée.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*)  [L]
RewriteRule ^(.*\.php)$  [L]
RewriteRule . index.php [L]


# Redirection d’une URL vers une autre
Redirect 301 /index.php https://mysite.au/index


</IfModule>

# END WordPress

你不能简单地 redirect/rewrite index.php 因为那是 WordPress front-controller 并且所有请求都写入它。

我原以为您希望在内部“重写”请求,而不是在外部“重定向”请求,并将用户留在“主页”URL,即。 example.com/,而不是暴露/index/index.html的真实位置。

您可以使用 mod_rewrite 在内部重写(而不是“重定向”)对文档根目录的直接请求(与重写请求相对)到 /index/index.html

请注意,您不应手动编辑 # BEGIN WordPress# END WordPress 注释标记之间的代码,因为 WordPress 本身会维护此代码块,稍后会尝试覆盖它。

.htaccess 文件的最顶部尝试以下操作, # BEGIN WordPress 注释标记之前。

# Rewrite the "example.com" homepage to "/index/index.html"
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(index\.php)?$ index/index.html [END]

# BEGIN WordPress
:

检查 REDIRECT_STATUS 环境变量的 条件 确保只有来自用户的直接请求被重写,而不是被后来的 WordPress 重写在内部重写的请求。

但是,以上允许用户请求 //index.php/index/index.html 访问您的自定义主页(即 /index/index.html)。

如果直接请求,您应该在 之前添加一个“重定向”,以删除 index.php(或 index/index.html)。然后可以简化上面的重写。例如,请尝试以下操作:

# Redirect to remove "index.php" or "index/index.html" if requested directly
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(index\.php|index/index\.html)$ / [R=301,L]

# Rewrite the homepage to "/index/index.html"
RewriteCond %{HTTP_HOST} ^example\.com [NC]   
RewriteRule ^$ index/index.html [END]

# BEGIN WordPress
: