【问题标题】:wordpress and custom htaccess ruleswordpress 和自定义 htaccess 规则
【发布时间】:2015-12-05 11:40:29
【问题描述】:

我正在查看我的代码 3 小时,但我不明白。我希望你能帮助我。

我有一个安装了自定义帖子类型高级自定义字段的 wordpress 博客。它的工作非常好。我对自定义字段使用基本过滤功能,如下所述:http://www.advancedcustomfields.com/resources/creating-wp-archive-custom-field-filter/

为了过滤自定义字段,我使用 url 中的 get-parameters。所以 url 的格式如下:

www.domain.tld/?post_type=movie&land=usa&typ=love&actor=kidman

现在我希望表单中有一个漂亮的网址:

www.domain.tld/movie/usa/love/kidman

问题来了,我无法正确获取 .htaccess :(

我的代码是:

AddHandler php56-cgi .php

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^movie/(.*)/(.*)/(.*)$ /?post_type=movie&land=$1&typ=$2&actor=$3 [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>

它不工作。结果是 404。我相信这是我不明白的“wordpress-thing”。

如果我将代码更改为:

RewriteRule ^movie/(.*)/(.*)/(.*)$ http://www.domain.tld/?post_type=movie&land=$1&typ=$2&actor=$3 [L]

它作为一个正常的重定向工作。

如果我把它改成

RewriteRule ^movie/(.*)/(.*)/(.*)$ file.php/?post_type=movie&land=$1&typ=$2&actor=$3 [L]

file.php 是一个非 wordpress 文件,它也可以工作(它显示了 file.php 的内容)

似乎我无法“调用”像 index.php 这样的 wordpress 特定文件。

我希望你能帮助我,感谢你阅读我的非母语英语;)

来自德国的问候 多米尼克

【问题讨论】:

    标签: php wordpress apache .htaccess mod-rewrite


    【解决方案1】:

    我自己解决了我的问题:)

    与往常一样,如果知道在哪里寻找,解决方案非常简单。

    我深入研究了:http://codex.wordpress.org/Rewrite_API/add_rewrite_rulehttp://codex.wordpress.org/Rewrite_API/add_rewrite_tag 硬币终于掉了。

    首先我删除了我在 .htaccess 中创建的每个自定义代码,因为它不是解决我问题的位置。

    我将以下内容添加到我的functions.php

    function custom_rewrite_basic() {
      add_rewrite_rule('^movie/(.*)/(.*)/(.*)?', 'index.php?post_type=movie&land=$matches[1]&typ=$matches[2]&actor=$matches[3]', 'top');
    }
    add_action('init', 'custom_rewrite_basic');
    
    function custom_rewrite_tag() {
      add_rewrite_tag('%land%', '([^&]+)');
      add_rewrite_tag('%typ%', '([^&]+)');
      add_rewrite_tag('%actor%', '([^&]+)');
    }
    add_action('init', 'custom_rewrite_tag', 10, 0);
    

    在您编辑完您的 function.php 后,不要忘记将永久链接保存在您的 wordpress 设置中。

    现在我可以访问模板中的“query_vars”了:

    $wp_query->query_vars['land']
    

    functions.php

    $query->query_vars[ land ]
    

    效果很好:)

    无论如何,谢谢你,祝你周末愉快 多米尼克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多