abc.com?=3 的数字想替换为其它任意数字, 请问 nginx 配置文件中如何写.
另外站点后台如 abc.com/admin 想保持不需要替换,请问又该如何操作?
1
xilou31 2023-03-16 07:52:09 +08:00
有点没看懂你在问什么
什么叫「替换为其它任意数字」,你是说正则表达式吗? 什么叫「想保持不需要替换」,保持什么? |
2
kergee 2023-03-16 08:43:12 +08:00
去问 chatgpt 吧,很好用,我现在几个配置都是
|
3
Arumoh 2023-03-16 08:52:54 +08:00
server {
listen 80; server_name abc.com; location / { rewrite ^/(.*)=3(.*)$ /$1=5$2 last; # 此处将数字 3 替换为数字 5 } location /admin { # 不需要替换数字,直接访问 /admin } } |
4
luxi78 2023-03-16 10:20:54 +08:00
nginx 配置、正则表达式、iptables 配置一类的问题,chatGPT 是很好的帮手。下面是 chatgpt 给出的答案:
server { listen 80; server_name abc.com; location / { rewrite ^/(.*)\?=3$ /$1?=4 last; # 替换数字 3 为 4 ,可以自定义其他数字 # last 表示重写后结束 rewrite 操作,继续执行下一个匹配 location # 如果不需要继续匹配 location ,可改为 break 或 redirect 等操作 } location /admin { # 处理 /admin 路径,不进行数字替换操作 # 如果有多个类似的路径需保护,可以使用正则表达式来匹配 } } |
6
iGuChin OP @luxi78
@Arumoh 两位配置错误了, 我贴出来, 请帮忙修改, 同时 /admin /cart-2 /wp_admin 这几个路径不进行数字替换操作. server { listen 80; listen 443 ssl http2; listen [::]:443 ssl http2; listen [::]:80; server_name www.abc.com abc.com; index index.php index.html index.htm ; root /www/wwwroot/www.abc.com; #SSL-START SSL 相关配置,请勿删除或修改下一行带注释的 404 规则 #error_page 404/404.html; #HTTP_TO_HTTPS_START if ($server_port !~ 443){ rewrite ^(/.*)$ https://$host$1 permanent; } #HTTP_TO_HTTPS_END ssl_certificate /www/server/panel/vhost/cert/www.abc.com/fullchain.pem; ssl_certificate_key /www/server/panel/vhost/cert/www.abc.com/privkey.pem; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000"; error_page 497 https://$host$request_uri; #SSL-END #ERROR-PAGE-START 错误页配置,可以注释、删除或修改 #error_page 404 /404.html; #error_page 502 /502.html; #ERROR-PAGE-END #PHP-INFO-START PHP 引用配置,可以注释或修改 include enable-php-74.conf; #PHP-INFO-END #REWRITE-START URL 重写规则引用,修改后将导致面板设置的伪静态规则失效 include /www/server/panel/vhost/rewrite/www.abc.com.conf; #REWRITE-END #禁止访问的文件或目录 location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) { return 404; } #一键申请 SSL 证书验证目录相关设置 location ~ \.well-known{ allow all; } #禁止在证书验证目录放入敏感文件 if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) { return 403; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; error_log /dev/null; access_log /dev/null; } location ~ .*\.(js|css)?$ { expires 12h; error_log /dev/null; access_log /dev/null; } access_log /www/wwwlogs/www.abc.com.log; error_log /www/wwwlogs/www.abc.com.error.log; } |
7
iGuChin OP 其实有个更简洁的思路就是判断如果 abc.com?=3 那么直接替换为想要的数字就可以了. 如果没有就不管它
|