【问题标题】:Pass parameter to WordPress plugin with pretty url, mod_rewrite, .htaccess使用漂亮的 url、mod_rewrite、.htaccess 将参数传递给 WordPress 插件
【发布时间】:2023-04-01 22:24:01
【问题描述】:

我告诉 WordPress 我希望网址看起来像: domain.com/postname.html

我想将参数传递给 WordPress 插件。所以当我得到 domain.com/postname.html.2 它应该是 domain.com/postname.html?tubepress_page=2

下面的参数是正确传递的,但不是名称。

这是.htaccess 文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^.*([0-9]+)$ /?tubepress_page=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php
</IfModule>

所以对于 URL domain.com/postname.html.2 上面的.htaccess 基本上可以工作,它给了我正确的脚本参数,但不是正确的页面,它给了我最新的 WordPress 帖子。

我认为它以某种方式缺少帖子名称,但我不知道如何 在 RewriteRule 中指定。

如果我输入以下内容,我会得到相同的结果: domain.com/.2 这给了我最新的帖子。

那么什么是好的 domain.com/xyz.html.2 是 tubepress_page=2 对于页面 xyz 而且我不想在 htaccess 文件中的任何地方指定 xyz.html, 因为我想 尽量避免为我发布的每个新帖子输入内容。

如何指定它以便在 RewriteRule 中考虑帖子名称变量?

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: wordpress .htaccess mod-rewrite


    【解决方案1】:

    试试这个规则:

    RewriteRule ^(.*\.html)\.([0-9]+)$ $1?tubepress_page=$2
    

    【讨论】:

    • 不,它不起作用。如果我这样做: RewriteRule ^(.*\.html)\.([0-9]+)$ $1?tubepress_page=$2 [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} ! -d 重写规则。 /index.php 浏览器从 /filename.html.3 重定向到 filename.html?tubepress_page=3 这表明逻辑是正确的?也许这是wordpress的错。那就是做一些额外的事情。它正确地翻译了 postname.html,因为它没有在 .htaccess 文件中说明任何关于 postname 的内容。
    猜你喜欢
    • 2011-03-09
    • 1970-01-01
    • 2013-09-14
    • 2012-05-28
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2015-08-10
    相关资源
    最近更新 更多