开发者

Help with Apache .htaccess file

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;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜