{"id":2088,"date":"2024-10-08T16:25:17","date_gmt":"2024-10-08T08:25:17","guid":{"rendered":"https:\/\/www.ruianding.com\/blog\/?p=2088"},"modified":"2024-10-08T16:28:27","modified_gmt":"2024-10-08T08:28:27","slug":"ensuring-css-and-javascript-load-correctly-on-apache-error-pages","status":"publish","type":"post","link":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/","title":{"rendered":"Ensuring CSS and JavaScript Load Correctly on Apache Error Pages"},"content":{"rendered":"\n<p>When customizing error pages in Apache, such as 404 or 403 pages, it\u2019s crucial to ensure the associated CSS and JavaScript files are loaded correctly regardless of the URL path where the error occurs. One common challenge is that resources may load perfectly when accessed from the root directory but fail from nested directories, impacting the user experience negatively. Here\u2019s how to address this problem by using absolute paths for resource linking.<\/p>\n\n\n\n<p><br>When the CSS failed to load, the appearance was as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"819\" src=\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1024x819.png\" alt=\"\" class=\"wp-image-2089\" style=\"width:465px;height:auto\" srcset=\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1024x819.png 1024w, https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-300x240.png 300w, https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-768x614.png 768w, https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1536x1228.png 1536w, https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image.png 1918w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Conversely, when the CSS loaded correctly, the page looked like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"469\" src=\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1-1024x469.png\" alt=\"\" class=\"wp-image-2090\" style=\"width:825px;height:auto\" srcset=\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1-1024x469.png 1024w, https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1-300x137.png 300w, https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1-768x352.png 768w, https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1-1536x704.png 1536w, https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1-2048x938.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-cyan-bluish-gray-color has-alpha-channel-opacity has-cyan-bluish-gray-background-color has-background is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Understanding Path References in HTML<\/h2>\n\n\n\n<p>Paths used in HTML for linking resources like CSS and JavaScript can be either relative or absolute:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Relative Paths<\/strong> \u2460: Relative paths (e.g., <code>.\/style.css<\/code>) are resolved relative to the current URL path. While convenient, they can lead to issues when an error page is displayed for URLs nested multiple levels deep, as the browser may look for resources in a non-existent directory.<\/li>\n\n\n\n<li><strong>Absolute Paths<\/strong>: Absolute paths (e.g., <code>\/style.css<\/code>), on the other hand, begin from the root directory of the domain. This method is highly reliable for error pages because it guarantees that the browser will always look for resources starting from the base URL of the website, regardless of the current URL\u2019s depth.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-light-green-cyan-background-color has-background\">\u2460 Using relative paths in your error pages can lead to resources not being loaded correctly if the error occurs in nested directories. For instance, if a user accesses a URL like https:\/\/www.ruianding.com\/apps\/lucky_draw\/spin and triggers a 404 error page, the browser will attempt to load resources based on the relative path from the <strong>current directory<\/strong>, which in this case is <strong>\/apps\/lucky_draw\/spin<\/strong>. If your CSS or JavaScript files are not located within this specific directory, the browser will fail to find and load them. This demonstrates why absolute paths are more reliable in a multi-level directory structure. By specifying resources with an absolute path, starting with a \/, the browser consistently fetches them from the root directory, ensuring they are always found and loaded correctly, regardless of the URL\u2019s depth.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implementing Absolute Paths for Error Pages<\/h2>\n\n\n\n<p>To avoid issues with resources not loading on error pages, it\u2019s advisable to use absolute paths when linking CSS and JavaScript files. This approach ensures that all users, no matter which part of your site they are trying to access, receive a fully styled and functional error page. Here is how you can correctly link your resources using absolute paths:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!-- Linking CSS files -->\n&lt;link rel=\"stylesheet\" href=\"\/assets\/css\/bootstrap.min.css\">\n&lt;link rel=\"stylesheet\" href=\"\/assets\/css\/style.css\">\n\n&lt;!-- If you have JavaScript files, link them like this -->\n&lt;script src=\"\/assets\/js\/errorHandling.js\">&lt;\/script><\/pre>\n\n\n\n<p>By starting the path with a forward slash (<code>\/<\/code>), you direct the browser to load the files from the specified paths starting directly from the root directory of your server.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"310\" src=\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-2-1024x310.png\" alt=\"\" class=\"wp-image-2091\" style=\"width:615px;height:auto\" srcset=\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-2-1024x310.png 1024w, https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-2-300x91.png 300w, https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-2-768x233.png 768w, https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-2.png 1228w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Using absolute paths for linking CSS and JavaScript files on your Apache error pages is a best practice that prevents the problem of resources failing to load on nested URL paths. This ensures that your error pages are always presented as intended, no matter where on your site the error occurs. <\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When customizing error pages in Apache, such as 404 or 403 pages, it\u2019s crucial to ensure the associated CSS and JavaScript files are loaded correctly regardless of the URL path where the error occurs. One common challenge is that resources may load perfectly when accessed from the root directory but fail from nested directories, impacting [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2088","post","type-post","status-publish","format-standard","hentry","category-miscellaneous"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ensuring CSS and JavaScript Load Correctly on Apache Error Pages - \u6781\u7b80IT\uff5cSimpleIT<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ensuring CSS and JavaScript Load Correctly on Apache Error Pages - \u6781\u7b80IT\uff5cSimpleIT\" \/>\n<meta property=\"og:description\" content=\"When customizing error pages in Apache, such as 404 or 403 pages, it\u2019s crucial to ensure the associated CSS and JavaScript files are loaded correctly regardless of the URL path where the error occurs. One common challenge is that resources may load perfectly when accessed from the root directory but fail from nested directories, impacting [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/\" \/>\n<meta property=\"og:site_name\" content=\"\u6781\u7b80IT\uff5cSimpleIT\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-08T08:25:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-08T08:28:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1918\" \/>\n\t<meta property=\"og:image:height\" content=\"1534\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ruian Ding\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ruian Ding\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/\"},\"author\":{\"name\":\"Ruian Ding\",\"@id\":\"https:\/\/www.ruianding.com\/blog\/#\/schema\/person\/440d88575b7dc819a4cefc8c4199db3b\"},\"headline\":\"Ensuring CSS and JavaScript Load Correctly on Apache Error Pages\",\"datePublished\":\"2024-10-08T08:25:17+00:00\",\"dateModified\":\"2024-10-08T08:28:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/\"},\"wordCount\":507,\"publisher\":{\"@id\":\"https:\/\/www.ruianding.com\/blog\/#\/schema\/person\/440d88575b7dc819a4cefc8c4199db3b\"},\"image\":{\"@id\":\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1024x819.png\",\"articleSection\":[\"Miscellaneous\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/\",\"url\":\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/\",\"name\":\"Ensuring CSS and JavaScript Load Correctly on Apache Error Pages - \u6781\u7b80IT\uff5cSimpleIT\",\"isPartOf\":{\"@id\":\"https:\/\/www.ruianding.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1024x819.png\",\"datePublished\":\"2024-10-08T08:25:17+00:00\",\"dateModified\":\"2024-10-08T08:28:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#primaryimage\",\"url\":\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image.png\",\"contentUrl\":\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image.png\",\"width\":1918,\"height\":1534},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.ruianding.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ensuring CSS and JavaScript Load Correctly on Apache Error Pages\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.ruianding.com\/blog\/#website\",\"url\":\"https:\/\/www.ruianding.com\/blog\/\",\"name\":\"Ruian's Tech Troubleshooting Toolbox\",\"description\":\"Debug the World.\",\"publisher\":{\"@id\":\"https:\/\/www.ruianding.com\/blog\/#\/schema\/person\/440d88575b7dc819a4cefc8c4199db3b\"},\"alternateName\":\"\u4e01\u777f\u5b89\u7684\u6280\u672f\u5206\u4eab\u535a\u5ba2\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.ruianding.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.ruianding.com\/blog\/#\/schema\/person\/440d88575b7dc819a4cefc8c4199db3b\",\"name\":\"Ruian Ding\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.ruianding.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2023\/05\/logo.png\",\"contentUrl\":\"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2023\/05\/logo.png\",\"width\":284,\"height\":284,\"caption\":\"Ruian Ding\"},\"logo\":{\"@id\":\"https:\/\/www.ruianding.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"I am currently a Support Specialist at NIO, focusing on cloud-related issues for NIO Power. Previously, at Microsoft Entra ID, I specialized in identity and access management (IAM), including device registration, Windows Hello for Business (WHfB), multi-factor authentication (MFA), and single sign-on (SSO). In addition to my core expertise, I have a strong foundation in Active Directory, Servers, Cloud Computing, Network Administration, and Front-end Web Development. This diverse technical skill set enables me to effectively handle a wide range of challenges in a fast-paced IT environment.\",\"sameAs\":[\"https:\/\/www.ruianding.com\"],\"url\":\"https:\/\/www.ruianding.com\/blog\/author\/ruiand\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ensuring CSS and JavaScript Load Correctly on Apache Error Pages - \u6781\u7b80IT\uff5cSimpleIT","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/","og_locale":"en_US","og_type":"article","og_title":"Ensuring CSS and JavaScript Load Correctly on Apache Error Pages - \u6781\u7b80IT\uff5cSimpleIT","og_description":"When customizing error pages in Apache, such as 404 or 403 pages, it\u2019s crucial to ensure the associated CSS and JavaScript files are loaded correctly regardless of the URL path where the error occurs. One common challenge is that resources may load perfectly when accessed from the root directory but fail from nested directories, impacting [&hellip;]","og_url":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/","og_site_name":"\u6781\u7b80IT\uff5cSimpleIT","article_published_time":"2024-10-08T08:25:17+00:00","article_modified_time":"2024-10-08T08:28:27+00:00","og_image":[{"width":1918,"height":1534,"url":"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image.png","type":"image\/png"}],"author":"Ruian Ding","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ruian Ding","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#article","isPartOf":{"@id":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/"},"author":{"name":"Ruian Ding","@id":"https:\/\/www.ruianding.com\/blog\/#\/schema\/person\/440d88575b7dc819a4cefc8c4199db3b"},"headline":"Ensuring CSS and JavaScript Load Correctly on Apache Error Pages","datePublished":"2024-10-08T08:25:17+00:00","dateModified":"2024-10-08T08:28:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/"},"wordCount":507,"publisher":{"@id":"https:\/\/www.ruianding.com\/blog\/#\/schema\/person\/440d88575b7dc819a4cefc8c4199db3b"},"image":{"@id":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1024x819.png","articleSection":["Miscellaneous"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/","url":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/","name":"Ensuring CSS and JavaScript Load Correctly on Apache Error Pages - \u6781\u7b80IT\uff5cSimpleIT","isPartOf":{"@id":"https:\/\/www.ruianding.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#primaryimage"},"image":{"@id":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image-1024x819.png","datePublished":"2024-10-08T08:25:17+00:00","dateModified":"2024-10-08T08:28:27+00:00","breadcrumb":{"@id":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#primaryimage","url":"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image.png","contentUrl":"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2024\/10\/image.png","width":1918,"height":1534},{"@type":"BreadcrumbList","@id":"https:\/\/www.ruianding.com\/blog\/ensuring-css-and-javascript-load-correctly-on-apache-error-pages\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.ruianding.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ensuring CSS and JavaScript Load Correctly on Apache Error Pages"}]},{"@type":"WebSite","@id":"https:\/\/www.ruianding.com\/blog\/#website","url":"https:\/\/www.ruianding.com\/blog\/","name":"Ruian's Tech Troubleshooting Toolbox","description":"Debug the World.","publisher":{"@id":"https:\/\/www.ruianding.com\/blog\/#\/schema\/person\/440d88575b7dc819a4cefc8c4199db3b"},"alternateName":"\u4e01\u777f\u5b89\u7684\u6280\u672f\u5206\u4eab\u535a\u5ba2","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.ruianding.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.ruianding.com\/blog\/#\/schema\/person\/440d88575b7dc819a4cefc8c4199db3b","name":"Ruian Ding","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.ruianding.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2023\/05\/logo.png","contentUrl":"https:\/\/www.ruianding.com\/blog\/wp-content\/uploads\/2023\/05\/logo.png","width":284,"height":284,"caption":"Ruian Ding"},"logo":{"@id":"https:\/\/www.ruianding.com\/blog\/#\/schema\/person\/image\/"},"description":"I am currently a Support Specialist at NIO, focusing on cloud-related issues for NIO Power. Previously, at Microsoft Entra ID, I specialized in identity and access management (IAM), including device registration, Windows Hello for Business (WHfB), multi-factor authentication (MFA), and single sign-on (SSO). In addition to my core expertise, I have a strong foundation in Active Directory, Servers, Cloud Computing, Network Administration, and Front-end Web Development. This diverse technical skill set enables me to effectively handle a wide range of challenges in a fast-paced IT environment.","sameAs":["https:\/\/www.ruianding.com"],"url":"https:\/\/www.ruianding.com\/blog\/author\/ruiand\/"}]}},"_links":{"self":[{"href":"https:\/\/www.ruianding.com\/blog\/wp-json\/wp\/v2\/posts\/2088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ruianding.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ruianding.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ruianding.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ruianding.com\/blog\/wp-json\/wp\/v2\/comments?post=2088"}],"version-history":[{"count":4,"href":"https:\/\/www.ruianding.com\/blog\/wp-json\/wp\/v2\/posts\/2088\/revisions"}],"predecessor-version":[{"id":2097,"href":"https:\/\/www.ruianding.com\/blog\/wp-json\/wp\/v2\/posts\/2088\/revisions\/2097"}],"wp:attachment":[{"href":"https:\/\/www.ruianding.com\/blog\/wp-json\/wp\/v2\/media?parent=2088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ruianding.com\/blog\/wp-json\/wp\/v2\/categories?post=2088"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ruianding.com\/blog\/wp-json\/wp\/v2\/tags?post=2088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}