I’m needing help on converting a htaccess rules to the nginx format.
I’ve got the software installed in a sub folder called directory. In the
root of that folder there is this .htaccess information:
#Options +FollowSymLinks
#Options -MultiViews
#Options All -Indexes
This can be uncommented to compress js and css files
#
#<FilesMatch “.(js|css)$”>
SetOutputFilter DEFLATE
#
#
This can be uncommented to set cache control for image, js, and css
files
#Header unset ETag
#FileETag None
#<FilesMatch “(?i)^.*.(ico|flv|swf|jpg|jpeg|png|gif|js|css)$”>
#Header unset Last-Modified
#Header set Expires “Fri, 21 Dec 2012 00:00:00 GMT”
#Header set Cache-Control “public, no-transform”
#
<FilesMatch “.(htaccess|tpl)$”>
Order Allow,Deny
Deny from all
#RewriteRule ^([a-zA-Z]+).html$ $1.php [L]
#Handle all category links. Static category text followed by ID,
followed by path
#The “category” text here needs to be changed if the language variable
category is changed
RewriteRule ^category/(.+/)location/(.+)$
browse_categories.php?id=$1&location=$2 [L,NC,QSA]
RewriteRule ^category/(.+)$ browse_categories.php?id=$1 [L,NC,QSA]
#Handle all location links. Static location text followed by ID,
followed by path
#The “location” text here needs to be changed if the language variable
location is changed
RewriteRule ^location/(.+)$ browse_locations.php?id=$1 [L,NC,QSA]
#Rewrite pages
RewriteRule ^pages/(.+).html$ page.php?id=$1 [L,NC]
#Rewrite Blog
RewriteRule ^blog.html$ blog.php [L,NC,QSA]
RewriteRule ^blog/([^/]+)-([0-9]+).html$ blog_post.php?id=$2 [L,NC]
RewriteRule ^blog/category/(.+)-([0-9]+).html$ blog.php?category_id=$2
[L,NC,QSA]
#Rewrite listing/banner website out
RewriteRule ^out-([0-9]+).html$ out.php?listing_id=$1 [L]
RewriteRule ^out-([0-9]+)-([0-9]+).html$
out.php?listing_id=$1&banner_id=$2 [L]
#Rewrite listings
#Ignore any physical files
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+).html$ listing.php?id=$1 [L,NC]
RewriteRule ^([^/]+)/images.html$ listing_images.php?id=$1 [L,NC]
RewriteRule ^([^/]+)/send-message.html$ listing_email.php?id=$1 [L,NC]
RewriteRule ^([^/]+)/send-message-friend.html$
listing_email_friend.php?id=$1 [L,NC]
RewriteRule ^([^/]+)/reviews.html$ listing_reviews.php?id=$1
[L,NC,QSA]
RewriteRule ^([^/]+)/add-review.html$ listing_reviews_add.php?id=$1
[L,NC]
RewriteRule ^([^/]+)/classifieds.html$ listing_classifieds.php?id=$1
[L,NC,QSA]
RewriteRule ^([^/]+)/documents.html$ listing_documents.php?id=$1
[L,NC,QSA]
RewriteRule ^([^/]+)/suggestion.html$ listing_suggestion.php?id=$1
[L,NC]
RewriteRule ^([^/]+)/claim.html$ listing_claim.php?id=$1 [L,NC]
#Rewrite classifieds
RewriteRule ^classified/[^/]±([0-9]+).html$ classified.php?id=$1
[L,NC]
RewriteRule ^classified/[^/]±([0-9]+)/images.html$
classified_images.php?id=$1 [L,NC]
#Rewrite sitemap
RewriteRule ^sitemap.xml$ xml.php?type=sitemap [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ 404.php?id=$1 [L,NC]
Then in the following subfolders I’ve got these other ones:
Directory/files
<FilesMatch “.(php|php3|php4|phtml|pl|cgi)$”>
deny from all
and
Directory/files/upload
<FilesMatch “.csv$”>
deny from all
and
Directory/includes/ckeditor
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights
reserved.
For licensing, see LICENSE.html or CKEditor OSS License
On some specific Linux installations you could face problems with
Firefox.
It could give you errors when loading the editor saying that some
illegal
characters were found (three strange chars in the beginning of the
file).
This could happen if you map the .js or .css files to PHP, for
example.
Those characters are the Byte Order Mask (BOM) of the Unicode encoded
files.
All FCKeditor files are Unicode encoded.
AddType application/x-javascript .js
AddType text/css .css
If PHP is mapped to handle XML files, you could have some issues. The
following will disable it.
AddType text/xml .xml
This is the converted files I’ve got
nginx configuration
location /directory/category {
rewrite ^/category/(.+/)location/(.+)$
/browse_categories.php?id=$1&location=$2 break;
rewrite ^/category/(.+)$ /browse_categories.php?id=$1 break;
}
location /directory/location {
rewrite ^/location/(.+)$ /browse_locations.php?id=$1 break;
}
location /directory/pages {
rewrite ^/pages/(.+).html$ /page.php?id=$1 break;
}
location = /directory/blog.html {
rewrite ^(.*)$ /blog.php break;
}
location /directory/blog {
rewrite ^/blog/([^/]+)-([0-9]+).html$ /blog_post.php?id=$2 break;
rewrite ^/blog/category/(.+)-([0-9]+).html$ /blog.php?category_id=$2
break;
}
location /directory/out {
rewrite ^/out-([0-9]+).html$ /out.php?listing_id=$1 break;
rewrite ^/out-([0-9]+)-([0-9]+).html$
/out.php?listing_id=$1&banner_id=$2 break;
}
location /directory/ {
if (!-e $request_filename){
rewrite ^/([^/]+).html$ /listing.php?id=$1 break;
}
rewrite ^/([^/]+)/images.html$ /listing_images.php?id=$1 break;
rewrite ^/([^/]+)/send-message.html$ /listing_email.php?id=$1 break;
rewrite ^/([^/]+)/send-message-friend.html$
/listing_email_friend.php?id=$1 break;
rewrite ^/([^/]+)/reviews.html$ /listing_reviews.php?id=$1 break;
rewrite ^/([^/]+)/add-review.html$ /listing_reviews_add.php?id=$1
break;
rewrite ^/([^/]+)/classifieds.html$ /listing_classifieds.php?id=$1
break;
rewrite ^/([^/]+)/documents.html$ /listing_documents.php?id=$1
break;
rewrite ^/([^/]+)/suggestion.html$ /listing_suggestion.php?id=$1
break;
rewrite ^/([^/]+)/claim.html$ /listing_claim.php?id=$1 break;
if (!-e $request_filename){
rewrite ^(.*)$ /404.php?id=$1 break;
}
}
location /directory/classified {
rewrite ^/classified/[^/]±([0-9]+).html$ /classified.php?id=$1
break;
rewrite ^/classified/[^/]±([0-9]+)/images.html$
/classified_images.php?id=$1 break;
}
location = /sitemap.xml {
rewrite ^(.*)$ /xml.php?type=sitemap break;
}
location ~ .(htaccess|tpl)$ {
deny all;
}
location ~/files/.(php|php3|php4|phtml|pl|cgi)$ {
deny all;
}
location ~ .csv$ {
deny all;
}
But this dosn’t seem to work, and as I’m new to using nginx I can’t get
my head around it. Can anyone help
Posted at Nginx Forum: