NGINX 重写规则提供了一种强大的方法来修改和管理 Web 服务器上的 URL 请求。这些规则对于重定向 URL、更改 URL 结构和改进 SEO 至关重要。通过利用重写规则,您可以确保用户和搜索引擎能够高效地访问您的内容并保持干净、有序的 URL 结构。掌握重写规则可让您增强 Web 服务器的功能和灵活性,从而提供更好的整体用户体验。
本指南将解释如何在 NGINX 中创建重写规则,并提供清晰的示例和步骤来帮助您配置服务器以有效地处理 URL 修改。
NGINX 重写规则:返回指令
NGINX return
指令是管理服务器响应的强大工具。它主要用于将客户端重定向到不同的 URL 或发送特定的状态代码。此指令简化了重定向流量,尤其是在移动或重组网站时。它对于 SEO 和在过渡期间保持用户体验至关重要。让我们研究一个独特的示例来了解它的应用:
示例:假设您想将用户从旧页面重定向到新页面。在 NGINX 配置文件中,您可以使用 return
指令如下:
server {
listen 80;
server_name oldsite.com;
return 301 http://newsite.com$request_uri;
}
在此示例中,对 oldsite.com 的任何请求都会永久重定向到 newsite.com,从而保留请求 URI。301 状态代码表示永久重定向,通知搜索引擎更新其索引。
NGINX 重写规则:重写指令
NGINX 重写指令用于在进一步处理之前以各种方式更改请求 URI。它比 return 指令更通用,允许根据条件进行复杂的 URL 操作。此功能对于创建 SEO 友好的 URL 和管理旧链接至关重要。
示例:假设您需要将动态 URL 转换为静态 URL,以实现更好的 SEO。您可以像这样使用重写指令:
server {
listen 80;
server_name example.com;
location /products {
rewrite ^/products/([0-9]+)/([0-9]+)$ /product?id=$1&page=$2 last;
}
}
在此场景中,类似 example.com/products/123/2 的 URL 会在内部重写为 example.com/product?id=123&page=2。最后一个标志表示应停止重写过程并重新评估新的 URI。
NGINX 重写规则示例
在 NGINX 中实现 HTTPS 重写规则
确保通过 HTTPS 进行安全连接对于数据安全至关重要。NGINX 重写指令可以将所有 HTTP 流量重定向到 HTTPS,从而增强传输中数据的安全性。
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
在此示例中,对 example.com 的 HTTP 请求被重定向到 HTTPS,确保加密通信。
精简 URL:NGINX 重写规则中删除重复的斜线
有时,URL 可能包含重复的斜杠,从而导致混淆或错误。NGINX 的重写指令通过将带有双斜杠的 URL 转换为单斜杠来有效处理此问题。
server {
server_name example.com;
if ($request_uri ~* "\/\/") {
rewrite ^/(.*)/$ /$1 permanent;
}
}
此规则通过删除任何多余的斜杠来简化 URL。
目录重定向:NGINX 重写规则的实际应用
在重组或移动资源时,通常需要有效地重定向整个目录。NGINX 通过其重写规则实现了这一点。
location ^~ /old-directory/ {
rewrite ^/old-directory/(.*)$ /new-directory/$1 permanent;
}
此命令将所有请求从 /old-directory/ 重定向到 /new-directory/。
使用 NGINX 中的重写规则进行查询字符串操作
根据查询字符串更改 URL 在网站重新设计期间尤其有用。NGINX 重写规则允许根据这些参数进行动态 URL 重构。
if ($args ~ "^id=(.*)&lang=(.*)") {
set $id $1;
set $lang $2;
rewrite ^/page.php$ /page/$lang/$id? permanent;
}
在这里,重写规则将复杂的查询字符串转换为更简化的 URL。
确保统一的 URL:NGINX 重写规则中的尾部斜杠
URL 结构的统一性(例如尾随斜杠)对于网站一致性和 SEO 至关重要。
rewrite ^([^.]*[^/])$ $1/ permanent;
此规则确保所有 URL 都以斜杠结尾,保持标准化格式。
基于方法的重定向:在 NGINX 中使用重写规则
NGINX 允许基于特定请求方法(例如 POST)进行重定向,这对于安全地处理表单提交至关重要。
if ($request_method = POST ) {
return 301 https://example.com$request_uri;
}
此命令将所有 POST 请求重定向到 HTTPS URL。
使用 NGINX 重写规则保护图像
通过防止未经授权的直接链接到您的图像来保护您的服务器资源。
location ~ .(gif|png|jpe?g)$ {
valid_referers none blocked ~.google. ~.bing. ~.yahoo. example.com *.example.com;
if ($invalid_referer) {
rewrite ^/images/(.*)$ /stop-hotlinking.$1 last;
}
}
此设置可使用无效的引荐来源重定向请求,从而有效地阻止热链接。
强制使用小写 URL 以保持一致性
在整个网站上维护小写的 URL 可增强一致性并避免混淆。
location ~ [A-Z] {
rewrite ^(.*)$ $scheme://$host$1 lowercase;
}
此命令将任何大写的 URL 元素转换为小写。
处理 URL 结构的变化
在网站更新期间,适应新的 URL 结构而不损失流量或损害用户体验至关重要。
server {
listen 80;
server_name example.com;
location ~* ^/oldpath/(.*) {
rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;
}
}
将用户和搜索引擎从旧 URL 重定向到新 URL。
为 CMS 平台创建干净的 URL
对于依赖查询字符串的 CMS 平台,NGINX 重写规则可以创建更干净、更适合 SEO 的 URL。
location / {
try_files $uri $uri/ @extensionless-php;
index index.html index.htm index.php;
}
location ~ \.php$ {
try_files $uri =404;
}
location @extensionless-php {
rewrite ^(/[^.]*[^/])$ $1.php last;
}
此设置将 URL 转换为更易读的格式,从而有可能提高 SEO 性能。
结论
通过在 NGINX 中创建和配置重写规则,您可以优化 URL 管理、改进 SEO 并确保无缝的用户体验。定期检查和测试您的重写规则,以确保它们按预期运行并根据需要进行调整。掌握 NGINX 重写规则可让您充分利用 NGINX 的强大功能,打造更具活力和响应能力的 Web 服务器。