我有一个软件下载站点,其中所有软件都托管在Amazon S3上。我在我的网站上使用WordPress,我不希望我的访问者知道我在Amazon S3上托管所有软件。我想将所有Amazon S3 URI重写为我的网站网址,每当访问者点击这些URI时,他们都应该重定向到Amazon S3 ...
我尝试使用Pretty Links Lite插件来隐藏Amazon S3链接,但该插件非常慢且缺乏支持。
有没有人对如何做到这一点有一些建议或更好的建议?
答案 0 :(得分:0)
除非您想通过服务器流式传输下载(这会破坏Amazon S3上的托管点),否则您将无法掩盖您的下载在Amazon S3上的事实。
答案 1 :(得分:0)
加入游戏的时间有点晚,但我遇到了与Pretty Links Lite相同的问题。你添加的Pretty Links越多,它就会减慢你的网站速度,即使是积极的缓存。
我的解决方案是创建一个名为redirect
的自定义帖子类型并使用一些自定义字段(尽管我使用高级自定义字段插件来获得更优雅的后端体验)。然后只需添加一个快速函数,该函数挂钩到template_redirect
,检查您的帖子类型。
唯一的缺点是你需要为你的CPT分配一个slug,但是你可以在注册函数中轻松定制它。
这是我的代码:
function register_redirect_cpt {
register_post_type('redirect', array(
'label' => 'redirects',
'labels' => array(
'name' => 'Redirects',
'singular_name' => 'Redirect',
'add_new' => 'Add Redirect',
'add_new_item' => 'Add New Redirect',
'edit_item' => 'Edit Redirect',
'new_item' => 'New Redirect',
'view_item' => 'View Redirect',
'search_items' => 'Search Redirects',
'not_found' => 'No Redirects found',
'not_found_in_trash' => 'No Redirects found in Trash'
),
'description' => 'Pretty Redirects',
'public' => true,
'menu_position' => 5,
'supports' => array(
'title',
'author',
'custom-fields' // This is important!!!
),
'exclude_from_search' => true,
'has_archive' => false,
'query_var' => true,
'rewrite' => array(
'slug' => 'redirect',
'with_front' => false
)
));
}
add_action('init', 'register_redirect_cpt') ;
正如我所说,您可以使用自定义字段或ACF插件为公共链接设置一些元变量-1,为真实目的地设置另一个元变量。我假设您使用vanilla自定义字段。然后将其插入您的functions.php
或主题函数文件:
function redirect_for_cpt() {
if (!is_singular('redirect')) // If it's not a redirect then don't redirect
return;
global $wp_query;
$redirect = isset($wp_query->post->ID) ? get_post_meta($wp_query->post->ID, '_true_destination', true) : home_url(); // If you forget to set a redirect then send visitors to the home page; at least we avoid 404s this way!
wp_redirect(esc_url_raw($redirect), 302);
exit;
}
add_action('template_redirect', 'redirect_for_cpt');