1

我有一个 wordpress 站点,它已经在使用 .htaccess 文件来显示干净的 URL,例如 example.com/post-name

wordpress .htaccess 文件通常包含以下代码来执行此操作:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

我的问题是我有一个特殊页面,其中有一个条件语句,基于我想通过 URL 传递的变量。如果我在浏览器中键入该 URL 并正常运行,该 URL 实际有效:http ://example.com/dir/?var=var-value

我想要做的是通过添加一个新的重定向规则使这个 url 看起来像这样:http://example.com/dir/var-value。我添加到文件中的内容如下:

RewriteRule ^dir/([^/]*)$ /dir/?var=$1 [L]

我对正则表达式没有很好的理解,尤其是在 .htaccess 文件中,我无法弄清楚这一点。如果我添加这个重定向然后输入适当的 url,我只会得到一个找不到页面的错误。我已经尝试将我的规则移动到文件中的不同位置,我得到了相同的结果。

附加信息是“dir”是由 wordpress 管理员创建的实际页面,我认为这里有一些冲突。我确实在 wordpress 上找到了这个页面,这可能会有所帮助http://codex.wordpress.org/Rewrite_API/add_rewrite_rule但是我无法让它工作,我不知道我是把它放在我的functions.php还是我的自定义模板文件。

我正在使用我创建的 genesis 框架的子主题。

4

1 回答 1

0

根据您链接的文档,您可以试试这个:

add_rewrite_rule('^dir/([^/]+)/?','dir?var=$matches[1]','top');
于 2013-11-12T21:31:32.197 回答