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

标签 wordpress apache .htaccess redirect mod-rewrite

我有一个 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由于 WordPress 结构,变成 example.com/index

如何仅将我的主页 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).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]


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


</IfModule>

# END WordPress

最佳答案

您不能简单地重定向/重写 index.php,因为它是 WordPress 前端 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
:

关于wordpress - 如何使用 WordPress Multisite 重定向特定站点的主页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72464339/

相关文章:

WordPress 管理仪表板未正确显示

html - 发送图片数据时413 Request Entity Too Large

wordpress - 当用户选择 Paypal 付款方式时,在结帐表单中禁用 WooCommerce 中的账单地址

javascript - WordPress - 使用自定义帖子字段中的参数创建动态 onclick 重定向方法

apache - javalangClassFormatError : Invalid Constant Pool entry Type 18

apache - htaccess 重定向到 https ://www

apache - 无法在 Apache htaccess 中重写和重定向 API URI

javascript - 您好,我需要知道如何在 OpenShift for Angular 的 RAILS REST 应用程序中启用 CORS

javascript - 流体包装厂布局

php - apache2 不加载 php 代码