【问题标题】:Wordpress Page RewriteWordpress 页面重写
【发布时间】:2014-04-17 15:32:31
【问题描述】:

如何重写 Wordpress URL,这样,如果我在 www.domain.com/A 上托管了页面 A,Wordpress 也会显示 www.domain.com/A/ABC、www.domain.com 的该页面/A/ABCDEF 等?我知道这可能不是一个好主意。我有一个非常具体的用例。我的测试服务器运行 Ubuntu,而实时服务器运行 Windows Server 2003,两个站点都在 Apache 上。

我尝试过的:

  • 直接修改.htaccess:

    重写规则 A/?.* A/

(我试图通过在我的 Apache 服务器配置中打开 RewriteLog 来调试为什么这不起作用。我发现所有重写最终都在 Wordpress 的 index.php 中,所以我认为使用 Wordpress 的可能更合适为此重写工具。)

  • 使用 WP_Rewrite(在 functions.php 中):

    函数 A_rewrite( $wp_rewrite ) { $wp_rewrite->rules["A/?.*"] = "A/"; 返回 $wp_rewrite->规则; } add_filter('generate_rewrite_rules', 'A_rewrite');

这两种方法都无法重写 URL,即请求仍然到达 /A/ABCD,产生 404。

非常感谢有关我在这些方法中做错了什么或更好的解决方案的指导。

【问题讨论】:

    标签: php wordpress apache .htaccess mod-rewrite


    【解决方案1】:

    在 wordpress 中不要使用任何代码。转到设置和永久链接单击更多选项您已选择任何选项或选择其他选项并编写您要显示的类型的代码

    【讨论】:

    • 不确定你的意思。我认为永久链接面板中的任何内容都无法帮助我解决此问题。
    【解决方案2】:

    由于缺乏适合我的更好解决方案,我最终在我的 functions.php 中执行了以下操作:

    $original_request = $_SERVER['REQUEST_URI'];
    $new_request = preg_replace("/\/A\/?.*\?id\=([A-Za-z0-9]+)$/", "/A/?id=$1", $original_request);
    
    if ($original_request !== $new_request) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "http://" . $_SERVER['HTTP_HOST'] . $new_request);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $ret = curl_exec($ch);
        echo $ret;
        die();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      相关资源
      最近更新 更多