以前,我一直在使用example.com?action=sitemap
这使我可以轻松地在我的索引页面上测试一个带有...
的站点地图请求$_REQUEST['action']
但是,我想使用example.com/sitemap
我想知道如何解析“/sitemap
”的外观请求
答案 0 :(得分:1)
if (strpos($_SERVER['PHP_SELF'],'sitemap')===false) {
//sitemap not found in server string
} else {
//sitemap found in server string
}
应该做的伎俩
答案 1 :(得分:1)
你可以在Wordpress中创建一个新的重写规则:
function sitemap_rewrite($wp_rewrite) {
$rules = array('sitemap' => 'index.php?action=sitemap');
$wp_rewrite->rules = $rules + $wp_rewrite->rules;
return $wp_rewrite;
}
add_action('generate_rewrite_rules', 'sitemap_rewrite');
function flush_rewrite_rules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_filter('init', 'flush_rewrite_rules');
您应该只需要运行一次这些函数(例如,安装主题时),因为重写规则存储在数据库中。
但是,您可能会发现使用此方法无法使用action
访问$_REQUEST['action']
变量。要访问您的变量,您需要将其添加到Wordpress'query_vars
数组中,如下所示:
function add_action_query_var($vars) {
array_push($vars, 'action');
return $vars;
}
add_filter('query_vars', 'add_action_query_var');
然后,您可以使用get_query_var('action')
检索操作变量。
答案 2 :(得分:1)
我真的不知道Wordpress,所以我的答案将是框架/应用程序无关,但您可以使用mod_rewrite轻松实现此行为(尽管这意味着它已经在您的主机上启用,或者您具有配置编辑访问权限)。只需将其放在网络根目录的.htaccess
文件中:
RewriteEngine On
RewriteRule ^/sitemap$ /index.php?action=sitemap [QSA,L]
如果您已经有一个带有.htaccess
声明的RewriteEngine On
文件,则可以在现有RewriteEngine
声明之后的任何地方安全地仅包含第二行。
它的作用基本上是告诉apache将/sitemap
上的所有请求视为/index.php?action=sitemap
上的请求。
答案 3 :(得分:0)
您可以尝试检查PHP $_SERVER["QUERY_STRING"]
变量的内容。它应该让你的/sitemap
部分也有可能有一些额外的参数。
答案 4 :(得分:0)