【问题标题】:htaccess redirect root to subdirectory but allow index.php in root to functionhtaccess 将根目录重定向到子目录,但允许根目录中的 index.php 起作用
【发布时间】:2013-12-31 17:36:21
【问题描述】:

这是我们的情况:原始域名(例如 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”,他的代码应该可以工作。谢谢阿努巴瓦!这是整个文件。

【问题讨论】:

    标签: php wordpress apache .htaccess joomla


    【解决方案1】:

    替换这条规则:

    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/

    【讨论】:

      猜你喜欢
      • 2014-01-04
      • 2012-04-27
      • 2017-01-12
      • 1970-01-01
      • 2013-03-06
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 2013-04-10
      相关资源
      最近更新 更多