【问题标题】:htaccess redirect root to subdirectory but allow index.php in root AND query strings to functionhtaccess 将根目录重定向到子目录,但允许根目录中的 index.php 和查询字符串起作用
【发布时间】:2014-01-04 07:46:18
【问题描述】:

我有一个类似的问题,并且得到了回答。但是,答案引出了另一个概念,现在我有以下问题。 (用户“anubhava”能够回答原始问题。)

让我解释一下,我们的情况是这样的:

我们正在使用 Joomla 启动一个新网站,但是,我们希望旧网站的所有入站链接继续运行(因为我们在旧网站上有很多 WordPress 内容)。因此,使用 htaccess,我们能够将所有对主域名的请求重定向到包含新 Joomla 网站的子目录。 [例如,由于 htaccess 代码,对 www.example.com 的请求被重定向到 www.example.com/PORTALsite,这正是我们想要的。]

此外,此代码还允许对旧 WordPress 网站主页的请求仍然有效(我们正在替换的旧网站)。 [例如,www.example.com/index.php 仍将正常运行并加载旧的 WordPress 站点,这正是我们想要的。]

仅当请求仅针对域名 (www.example.com) 时,才会重定向到新 Joomla 网站的主页(位于 www.example.com/PORTALsite/),但如果请求是针对旧网站的主页(位于 www.example.com/index.php)将允许这样做并加载旧的 WordPress 网站。

这是 htaccess 代码:

RewriteEngine on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+[\s?]
RewriteRule ^$ /PORTALsite [R=301,L]

但是,我现在的问题是这样的:有很多入站链接,其中旧 WordPress 网站的 index.php 页面被省略,只附加了一个查询字符串(在旧网站通过 WordPress)。但是,因为上面的代码将其视为仅对主域名的调用(因为它“忽略”了查询字符串),所以它还将它重定向到新的 Joomla 网站。 我们不希望发生这种情况!请帮忙?

现在的问题示例

  1. (不是问题)对主域名的请求被成功重定向 到新的 Jooma 网站,因此 www.example.com 将重定向到 www.example.com/PORTALsite,如我们所愿。

  2. (不是问题)www.example.com/index.php 成功加载旧版 WordPress 网站的主页,但正如我们所愿和应有的那样。

  3. 但问题是这样的:没有文件名但包含 查询字符串,例如 www.example.com/?page_id=56 也正在获取 重定向到新的 Joomla 网站(例如,www.example.com/PORTALsite/?page_id=56),我们确实希望发生这种情况。

    我们希望 www.example.com/?page_id=56 重定向到 www.example.com/index.php?page_id=56 并从 旧的 WordPress 网站。 如何根据上面的 htaccess 代码实现这一点?

提前感谢您的帮助!

【问题讨论】:

    标签: php wordpress .htaccess redirect joomla


    【解决方案1】:
    RewriteEngine on
    # Match requests for /
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+[\s?]
    # Don't match requests for page_id=n
    RewriteCond %{QUERY_STRING} !page_id=[0-9]+
    # Redirect to /PORTALsite
    RewriteRule ^$ /PORTALsite [R=301,L]
    

    【讨论】:

    • 谢谢乔恩!工作完美!
    猜你喜欢
    • 2013-12-31
    • 2012-04-27
    • 2017-01-12
    • 1970-01-01
    • 2013-03-06
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多