apache 我如何将我的 .htaccess 文件转换为 NGINX?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2003972/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-13 18:34:42  来源:igfitidea点击:

How would I convert my .htaccess file to NGINX?

apache.htaccessnginx

提问by TeddyR

How would I convert my below .htaccess (Apache) file so that it could be used by NGINX?

我将如何转换我下面的 .htaccess (Apache) 文件以便它可以被 NGINX 使用?

Options -Indexes
Options +FollowSymLinks

# Enable ETag
#FileETag MTime Size
FileETag none

# Set expiration header
ExpiresActive on
ExpiresDefault A2592000
Header append Cache-Control "public"

# Compress some text file types
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml application/x-javascript text/javascript application/javascript application/json

# Deactivate compression for buggy browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Set header information for proxies
Header append Vary User-Agent

########################################################
# Rewrite Rules
########################################################

RewriteEngine on

# Require SSL (HTTPS) on the signup page
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} ^/signup/?
RewriteRule ^(.*)$ https://www.example.com/ [R,L]

# Redirect /signup/plan or /signup/plan/ ->  /signup/index.php?account_type=plan
RewriteRule ^signup/([A-Za-z]+)/?$ /signup/index.php?account_type= [NC,L]

# Redirect /home/123 or /home/123/ ->  home.php?home_id=123
RewriteRule ^home/([0-9]+)/?$ home.php?home_id= [NC,L]

# Redirect /homes/ in case someone made a typo when it should have been /home/
RewriteRule ^homes/([0-9]+)/?$ home.php?home_id= [NC,L]

#################################################
# Default Settings
#################################################

# hide apache server signaute on apache generated pages (e.g. 404)
ServerSignature Off

回答by Java

    if ($server_port ~ "80"){
 set $rule_0 1$rule_0;
}
if ($uri ~ "^/signup/?"){
 set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
 rewrite ^/(.*)$ https://www.example.com/ redirect;
 break;
}
 rewrite ^/signup/([A-Za-z]+)/?$ /signup/index.php?account_type= last;
 rewrite ^/home/([0-9]+)/?$ /home.php?home_id= last;
 rewrite ^/homes/([0-9]+)/?$ /home.php?home_id= last;

Online converter

在线转换器