【问题标题】:How do I fix this rewrite rule issue如何解决此重写规则问题
【发布时间】:2020-01-30 13:20:35
【问题描述】:

我正在尝试更改 WordPress 中的 URL。

这是我的 URL http://127.0.0.1/projectname/pagename/val1/val2/val3

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /projectname/
    RewriteRule pagename/(.*)/(.*)/(.*) pagename/?param1=$1&param2=$2&param3=$3 [L,QSA]
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /projectname/index.php [L]
</IfModule>

我希望我的网站将此视为

http://127.0.0.1/projectname/pagename/?param1=val1&param2=val2&param3=val3

【问题讨论】:

  • 不是真正的 php 相关,所以也许考虑删除那个标签。
  • 这个和PHP无关,这个和.htaccess文件有关,请使用特定标签
  • 听起来您想撤消 SEO 友好网址设置。请参阅settings-&gt;permalinks 并在此处撤消它
  • @RiggsFolly 我想保留 SEO 友好的 URL。我想在 URL 中传递一些数据。 pagename 是我在 wordpress admin 中创建的页面并将其分配给模板。我在该模板中有一些自定义逻辑,其中我需要这些变量,我的 SEO 团队出于某种原因希望在 URL 中看到它们,但不是作为查询参数,而是作为“/”分隔的 URL
  • 我已经解决了这个问题。就我而言,这是一个错字。感谢大家的帮助

标签: wordpress apache .htaccess url-rewriting


【解决方案1】:

以下是WordPress方式的解决方案

add_action('init', 'custom_rule');

function custom_rule(){
    add_rewrite_tag('%param1%','([^&]+)');
    add_rewrite_tag('%param2%','([^&]+)');
    add_rewrite_tag('%param3%','([^&]+)');
    add_rewrite_rule('^pagename/([^/]*)/([^/]*)/([^/]*)/?','index.php?pagename=pagename&param1=$matches[1]&param2=$matches[2]&param3=$matches[3]','top');
    flush_rewrite_rules();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-17
    • 2011-02-23
    • 2014-01-23
    • 2014-09-26
    • 2012-12-06
    • 1970-01-01
    相关资源
    最近更新 更多