如何使用 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/index
和 Redirect 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
:
我有一个 WordPress 站点并安装了 Multisite。 WordPress 位于根目录(如 example.com/
)。我的其他站点(多站点)就像 portfolio.example.com
.
我不想让我的主页成为我的 WordPress 网站。我希望它成为我创建的主页(使用我的 CSS 和我的 JS)并且它位于 example.com/index
.
我尝试使用 Redirect 301 /index.php https://example.com/index
和 Redirect 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
: