gpt4 book ai didi

php - htaccess 将 root 重定向到子目录,但允许 root 中的 index.php 运行

转载 作者:行者123 更新时间:2023-12-04 02:37:38 27 4
gpt4 key购买 nike

这是我们的情况:原始域名(比如 www.example.com)是在 WordPress 中完成并安装在根目录中的。我们使用 Joomla 创建了一个新网站并将其放置在子目录中(例如 www.example.com/PORTALsite)。

我已经能够在 htaccess 中使用以下代码成功地将根 (www.example.com/) 重定向到这个子目录 (www.example.com/PORTALsite):

RewriteEngine on
RewriteRule ^$ http://www.example.com/PORTALsite [R=301,L]

这很好用,除了我们需要原始的 WordPress 网站(位于 www.example.com/index.php 的主页)仍然有效。我们需要这个,因为我们在这个 WordPress 网站中有数百个页面被搜索引擎编入索引,我们希望所有这些旧内容继续发挥作用。

上面的代码适用于根目录中的所有文件和子目录,允许我们的旧内容继续运行,并且它正确地将根目录本身 (www.example.com/) 重定向到新的 Joomla 网站的子目录目录 (www.example.com/PORTALsite)。

但是,问题是这样的:如果直接访问旧 WordPress 站点的 index.php 文件(即,如果有人输入 www.example.com/index.php),我们仍然需要它才能运行,但它不是运作。如果你去 www.example.com/index.php 也会重定向到 www.example.com/PORTALsite。尽管根目录中的所有其他文件仍按我们希望的方式运行。

让我确保我正确地解释了这一点:如果有人访问我们的域 (www.example.com),它会按照我们的意愿重定向到新的 Joomla 网站(位于 www.example.com/PORTALsite)。但是,如果您转到 www.example.com/index.php(旧 WordPress 网站的主页),它还会重定向到新 Joomla 网站的子目录 (www.example.com/PORTALsite)。我们不希望这种情况发生。我们希望这样,如果根目录的 index.php 文件被直接访问,它仍然可以运行(以保持所有旧的 WordPress 内容完好无损)。

我们只希望对域名本身 www.example.com 的请求重定向到 www.example.com/PORTALsite。但是,我们需要所有其他文件和子目录,包括 www.example.com/index.php,仍然有效(以便人们仍然可以访问旧 WordPress 网站的所有内容,以及大量静态页面) .

根目录 (www.example.com/) 中的所有文件和子目录仍然可以正常运行,但只有旧 WordPress 站点的主页(位于 www.example.com/index.php)也进行了重定向到位于 www.example.com/PORTALsite 的新站点(连同对域名本身 www.example.com 的请求)。所以上面的代码非常接近我们想要的效果。

我非常感谢 StackOverflow 上的专业知识,也非常感谢我们可以获得的任何帮助。提前致谢!

更新:这是我们 HTACCESS 文件中的代码:(使用“example.com”而不是真正的域名)

RewriteEngine on
RewriteRule ^$ http://www.example.com/PORTALsite [R=301,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

根据下面的 anubhava 回复,一旦我让 WordPress 停止从 URL 中删除“index.php”,他的代码应该可以工作。谢谢阿努巴瓦!这是整个文件。

最佳答案

替换这条规则:

RewriteRule ^$ http://www.example.com/PORTALsite [R=301,L]

用这个:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+[\s?]
RewriteRule ^$ /PORTALsite [R=301,L]
  • 确保这是您 wordpress .htaccess 中的第一条规则
  • 确保在不同的浏览器中进行测试以避免 301 缓存问题
  • 更改 WP 的永久链接设置,使您的博客/主页 URL 为 http://domain.com/index.php 而不是 http://domain.com/

关于php - htaccess 将 root 重定向到子目录,但允许 root 中的 index.php 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20558230/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com