我有一个 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
由于 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/