一旦被重写规则重定向,WordPress如何知道页面?

时间:2014-07-04 作者:rellampec

我一直在搜索的一些配置。htaccess、过滤器和挂钩使其能够管理内部站点uri。目标是通过SSL强制登录、注册和管理页面,并通过HTTP强制所有其他页面。

虽然http和https具有相同的域时很容易,但如果域不同,甚至路径不同(例如:mydomain.com/blog上的http和mydomain.sslserver.com上的https),则很难实现。

这两个问题都不是(Use a different domain for SSL) 也不是HTTPS PlugIn, 帮助成功实现了这一目标。因此,我开始利用其他一些信息进行自己的定制。

问题是,我对WordPress代码非常陌生,试图了解重定向的工作原理,我没有理解WordPress内部的重定向。

然后my question: 如果RewriteRule没有传递永久链接的路径(例如,到帖子或类别的路径),而只是重写到/索引。php,这个文件如何“知道”所查询的帖子或类别?

我认为在代码的某些部分,它需要在某处使用$\\u服务器[“REQUEST\\u URI”]或$\\u服务器[“REQUEST\\u URI”]或$\\u服务器[“ORIG\\u PATH\\u INFO”],因为它不需要将permalink的路径转换为查询字符串,也不需要发送任何POST或GET数据。

请,我一直在寻找一些教程,告诉你发生了什么,但没有找到任何清晰和平面的解释。也许有太多的密切相关的信息页面,搜索者没有给我显示正确的页面,也许我没有正确搜索,但我真的需要知道它是如何工作的。

谢谢

3 个回复
最合适的回答,由SO网友:Milo 整理而成

在文件中解析请求的URLwp-includes/class-wp.php. 魔术开始于line 148 in the parse_request function. 对于路径信息样式永久链接,$_SERVER[\'PATH_INFO\'] 用于永久性的,$_SERVER[\'REQUEST_URI\'] 已使用。

SO网友:Alessandro Benoit

如果我理解正确的话,你要找的是get_query_var( $var ) 返回通过重写过程传递的给定var。

http://codex.wordpress.org/Function_Reference/get_query_var

这里是WordPress查询变量列表

http://codex.wordpress.org/WordPress_Query_Vars

出于调试目的,您可以使用以下方法获取所有query\\u vars的列表:

global $wp_query;
var_dump($wp_query->query_vars);

Updated

在中插入以下代码wp-content/themes/your-theme/functions.php:

// Trigger an hook just before the current template is loaded
add_action(\'template_redirect\',\'all_my_vars_152651\');
function all_my_vars_152651 () {
    global $wp_query;
    var_dump($wp_query->query_vars);
}

SO网友:rellampec

我将用更多的信息来扩展我的问题,以便更好地理解。在/testting/folder(博客目录)中。基本的。htaccess显示:

RewriteBase /testting/
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /testting/index.php [L]
Once“www.domain。tld/testting/2014/07/hello world/\'被调用,它将“/testting/2014/07/hello world/”重写为“/testting/index”。php”,但不将“2014/07/hello world/”作为查询传递;与其他人一样。htaccess规则将执行->操作,例如:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L]
出于这个原因,我不明白“索引”是如何建立的。php“can know the PATH”2014/07/hello world/(本例中的帖子)。这就是为什么我认为WordPress在某处使用$\\u服务器[\'REQUEST\\u URI\']或$\\u服务器[\'ORIG\\u PATH\\u INFO\']。因为“2014/07/hello world/”不是通过POST或GET传递的(是吗?)。

在开始学习挂钩和过滤器如何工作之前,我需要解决这个基本问题。然而,正如我在一开始所说的,我没有找到任何文档来说明这是怎么回事。

再次感谢您!

结束