我在Wordpress中只有一个页面,该页面可以查找sql服务器并根据查询字符串显示不同的内容。
例如,我使用的URL是https://some-server.com/dynamic-page/?stem=name-of-content-to-be-looked-up
当我访问页面并更改查询字符串时,内容也会更改。完美。
现在,我不希望将查询字符串公开给最终用户,因此,我尝试使用如下的mod_rewrite:
RewriteRule ^ds/(.*) /dynamic-page/?stem=$1 [PT]
最终用户的URL看起来像https://some-server.com/ds/name-of-content-to-be-looked-up
当我使用301重定向时,效果很好。当我使用内部重定向时,它是404的。最后,我尝试了几种不同的标志,但是均以404失败。
有人曾经尝试过并成功完成吗?愿意分享一些想法吗?
我已经尝试了以下方法,还有更多其他方法都无效:
RewriteRule ^ds/(.*) /dynamic-page/?stem=$1 [PT]
RewriteRule ^ds/(.*) /dynamic-page/?stem=$1 [L]
RewriteRule ^ds/(.*) /dynamic-page/?stem=$1 [R,L]
RewriteRule ^ds/(.*) /dynamic-page?stem=$1 [QSA,NS,L]
RewriteCond %{REQUEST_URI} ^/ds/
RewriteRule ^ds/(.*) /index.php/dynamic-page?stem=$1 [PT]
有什么想法吗?
谢谢, 布莱恩
答案 0 :(得分:0)
好的,我知道了。与其在apache重定向中执行此操作,还不如在我的wordpress functions.php文件中添加一些过滤器:
function setup_filter_query_vars($query_vars)
{
$query_vars[] = 'stem';
return $query_vars;
}
add_filter( 'query_vars', 'setup_filter_query_vars' );
function setup_filter_rewrites()
{
add_rewrite_rule('ds/([^/]*)/?', 'index.php?stem=$matches[1]&pagename=dynamic-page&', 'top');
}
add_action( 'init', 'setup_filter_rewrites' );
此后,我不得不以与页面内略有不同的方式引用querystring变量。我必须更改标准“ $ _GET [“ stem”];“到“ get_query_var('stem',1);”
希望这对其他人有帮助。