Options +FollowSymLinks Options -MultiViews RewriteEngine On RewriteBase / # Redirect everything to HTTPS RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Remove www RewriteCond %{HTTP_HOST} ^www\.freepo\.st$ [NC] RewriteRule ^(.*)$ https://freepo.st/$1 [R=301] # Remove trailing slashes # RewriteRule (.*)/+$ https://freepo.st/$1 [NC,L,R=301,QSA] # Rewrite for public assets RewriteRule .+/css/(.+)$ css/$1 [NC,L,QSA] RewriteRule .+/images/(.+)$ images/$1 [NC,L,QSA] RewriteRule .+/javascript/(.+)$ javascript/$1 [NC,L,QSA] # community/[community name]/post/[post hash_id]/[post title]/comment/[comment hash_id] RewriteRule community/.+/post/(.+)/.+/comment/(.+)$ post/$1#comment-$2 [NC,NE,L,QSA,R=301] # Redirect old urls RewriteRule community/.+/post/(.+)/.+$ post/$1 [NC,L,QSA,R=301] RewriteRule community/.+/post/(.+)/*$ post/$1 [NC,L,QSA,R=301] # community/[community name] RewriteRule community/.+$ / [NC,L,QSA,R=301] # Redirect /new to index.php RewriteRule ^new$ index.php?new [NC,L,QSA] # For votes from post/... RewriteRule post/vote$ vote.php [NC,L,QSA] # Show a post's page RewriteRule post/(.+)$ post.php?hash_id=$1 [NC,L,QSA] # Show a user's public profile RewriteRule user/(.+)$ user.php?username=$1 [NC,L,QSA] # Show a user's activity (private only) RewriteRule user_activity/(.+)$ user_activity.php?$1 [NC,L,QSA] # RSS RewriteRule ^rss/(.+)$ rss.php?sort=$1 [NC,L,QSA] RewriteRule ^rss$ rss/hot [NC,L,R=301] # Rewrite to the corresponding .php page # Not a directory RewriteCond %{REQUEST_FILENAME} !-d # A HTML file exists RewriteCond %{REQUEST_FILENAME}\.php -f # Route URL to the right HTML page RewriteRule (.+) $1.php [NC,L,QSA] # If the requested filename exists, simply serve it. # We only want to let Apache serve files and not directories. RewriteCond %{REQUEST_FILENAME} -f RewriteRule .? - [L]