Trying to convert my .htaccess file to NGINX notation.
I've read the online help guides but am still struggling.
Would anyone mind helping. My .htaccess is:
Options -Indexes
Options +FollowSymLinks
# Enable ETag
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/$1 [R,L]
# Redirect /signup/plan or /signup/plan/ -> /signup/index.php?account_type=plan
RewriteRule ^signup/([A-Za-z]+)/?$ /signup/index.php?account_type=$1 [NC,L]
# Redirect /home/123 or /home/123/ -> home.php?home_id=123
RewriteRule ^home/([0-9]+)/?$ home.php?home_id=$1 [NC,L]
# Redirect /homes/ in case someone made a typo when it should have been /home/
RewriteRule ^homes/([0-9]+)/?$ home.php?home_id=$1 [NC,L]
###########################################################
# Error Handling
###########开发者_开发技巧################################################
#ErrorDocument 400 /
#ErrorDocument 401 /
#ErrorDocument 403 /
#ErrorDocument 404 /
#ErrorDocument 500 /
#################################################
# Default Settings
#################################################
# hide apache server signaute on apache generated pages (e.g. 404)
ServerSignature Off
UPDATE:
For the GZIP compression, this appears to work. But I still haven't figured out how to my my HTTP Rewrites rules yet.
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml;
gzip_disable "MSIE [1-6]\.";
UPDATE 2
I tried replacing my htaccess rewrite rules with the following NGINX rules but this doesn't appear to work. Any ideas what I'm doing wrong?
# Redirect /signup/planname or /signup/planname/ -> /signup/index.php?account_type=planname
rewrite ^signup/([A-Za-z]+)/?$ /signup/index.php?account_type=$1 last;
# Redirect /home/123 or /home/123/ -> home.php?home_id=123
rewrite ^home/([0-9]+)/?$ home.php?home_id=$1 last;
# Redirect /homes/ in case someone made a typo when it should have been /home/
rewrite ^homes/([0-9]+)/?$ home.php?home_id=$1 last;
UPDATE 3
Per the comments below, I now have the following NGINX config but am still having problems
# gzip
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml;
gzip_disable "MSIE [1-6]\.";
# Require SSL (HTTPS) on the signup page
# ====== THIS DOESN'T WORK AND BREAKS NGINX
# I obviously change "example.com" to be my actual domain
if (location /signup/) {
rewrite ^ https://www.example.com$request_uri? permanent;
}
# Redirect /signup/planname or /signup/planname/ -> /signup/index.php?account_type=planname
rewrite ^signup/([A-Za-z] +)/?$ /signup/index.php?account_type=$1 last;
# Redirect /home/123 or /home/123/ -> home.php?home_id=123
# Also, Redirect /homes/ in case someone made a typo when it should have been /home/
rewrite ^/homes?/([0-9]+)/?$ /home.php?home_id=$1? last;
As I see in documentation, your rules (not conds) should be like this:
A:
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} ^/signup/?
RewriteRule ^(.*)$ https://www.example.com/$1
N (see here for more info) :
if (location /signup) {
rewrite ^ https://pma.clinicacgm.0$request_uri? permanent;
}
A:
RewriteRule ^home/([0-9]+)/?$ home.php?home_id=$1
RewriteRule ^homes/([0-9]+)/?$ home.php?home_id=$1
N:
rewrite ^/homes?/([0-9]+)/?$ /home.php?home_id=$1? last;
精彩评论