# BEGIN SpeedyCacheheaders FileETag None Header unset ETag Header set x-speedycache-source "Server" Header set Cache-Tag "essaybishops.com" Header set CDN-Cache-Control "max-age=1296000" Header set Cache-Control "public" Header unset Pragma Header unset Last-Modified Header unset Pragma Header set Cache-Control "public" # END SpeedyCacheheaders # BEGIN Gzipspeedycache AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE font/woff AddOutputFilterByType DEFLATE font/woff2 AddOutputFilterByType DEFLATE text/js AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/font-woff2 AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/rss+xml # END Gzipspeedycache # BEGIN LBCspeedycache ExpiresActive on ExpiresDefault A0 ExpiresByType text/css A31536000 ExpiresByType text/javascript A31536000 ExpiresByType font/ttf A31536000 ExpiresByType font/otf A31536000 ExpiresByType font/woff A31536000 ExpiresByType font/woff2 A31536000 ExpiresByType image/jpg A31536000 ExpiresByType image/jpeg A31536000 ExpiresByType image/png A31536000 ExpiresByType image/gif A31536000 ExpiresByType image/webp A31536000 ExpiresByType image/x-icon A31536000 ExpiresByType image/svg+xml A31536000 ExpiresByType image/vnd.microsoft.icon A31536000 ExpiresByType video/ogg A31536000 ExpiresByType video/mp4 A31536000 ExpiresByType video/webm A31536000 ExpiresByType audio/ogg A31536000 ExpiresByType application/pdf A31536000 ExpiresByType application/javascript A31536000 ExpiresByType application/x-javascript A31536000 ExpiresByType application/x-font-ttf A31536000 ExpiresByType application/x-font-woff A31536000 ExpiresByType application/font-woff A31536000 ExpiresByType application/font-woff2 A31536000 ExpiresByType application/vnd.ms-fontobject A31536000 # END LBCspeedycache # BEGIN WEBPspeedycache RewriteEngine On RewriteCond %{HTTP_ACCEPT} image/webp RewriteCond %{REQUEST_FILENAME} \.(jpe?g|png|gif)$ RewriteCond %{DOCUMENT_ROOT}/$1.webp -f RewriteRule ^(.+)\.(jpe?g|png|gif)$ $1.webp [T=image/webp,L] Header append Vary Accept env=REDIRECT_accept AddType image/webp .webp # END WEBPspeedycache # ============================================================ # DOMAIN ALIAS — bishopswritingbureau.com → essaybishops.com # # Both domains share the same document root and WordPress # installation. This block must come BEFORE the SpeedyCache # and WordPress rewrite sections so that: # 1. SpeedyCache stores/serves separate cache buckets per # HTTP_HOST (it already uses %{HTTP_HOST} in the cache # path, so no extra work needed there). # 2. WordPress receives the correct SERVER_NAME / HTTP_HOST # and wp-config.php maps each host to the right siteurl. # No redirect is performed here — the alias serves the SAME # content under the visitor's own URL. # ============================================================ RewriteEngine On # Normalise bare bishopswritingbureau.com → www (optional, # mirror the same www/non-www policy you use for essaybishops) RewriteCond %{HTTP_HOST} ^bishopswritingbureau\.com$ [NC] RewriteRule ^(.*)$ https://www.bishopswritingbureau.com/$1 [R=301,L] # ============================================================ # END DOMAIN ALIAS # ============================================================ # BEGIN speedycache RewriteEngine On RewriteBase / RewriteCond %{REQUEST_METHOD} GET RewriteCond %{HTTP_USER_AGENT} !(Mediatoolkitbot|facebookexternalhit|SpeedyCacheCCSS) RewriteCond %{QUERY_STRING} ="" RewriteCond %{HTTP:Cookie} !(comment_author_|wordpress_logged_in_) # ── FIX 1: Never serve SpeedyCache HTML for dashboard/portal paths ────── # Without this, SpeedyCache serves a stale cached WP-404 or wp-login # redirect for /dashboard and /dashboard/authorization, bypassing # prox-dashboard.php entirely. These paths must always hit the live PHP. RewriteCond %{REQUEST_URI} !^/(dashboard|order|checkout|payment|papers|inquiry|class-help|install) [NC] # ── END FIX 1 ──────────────────────────────────────────────────────────── RewriteCond %{REQUEST_URI} !(\/){2}$ RewriteCond %{REQUEST_URI} !^/(wp-(?:admin|login|register|comments-post|cron|json))/ [NC] RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/speedycache/%{HTTP_HOST}/all%{REQUEST_URI}/index.html -f RewriteRule ^(.*) /wp-content/cache/speedycache/%{HTTP_HOST}/all%{REQUEST_URI}/index.html [L] # END speedycache # ============================================================ # BOT & SPAM USER AGENT BLOCKING — essaybishops.com # Updated April 2026 # # CHANGES IN THIS VERSION: # • Added REAL-USER WHITELIST block at the top — passes all # legitimate Chrome, Edge, Firefox, Safari, Opera, and mobile # browsers through immediately, skipping all blocking rules. # • Added Perplexity-User/1.0 whitelist (Comet browser support). # • Added Googlebot / Bingbot / DuckDuckBot whitelist so SEO # crawlers still index your site. # • All original bot-blocking Rules 0–11 fully retained and # unchanged — they only fire if the whitelist did NOT match. # • Skip count [S=N] on each whitelist rule is set to 30 to # safely skip all blocking rules below. Adjust if you add more. # ============================================================ RewriteEngine On # ============================================================ # SECTION A — REAL USER & TRUSTED BROWSER WHITELISTS # These rules run FIRST. Any match skips ALL blocking rules # below via [S=30]. Real users are never blocked. # ============================================================ # ------------------------------------------------------------ # A1 — Perplexity Comet browser (live-user UA) # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "Perplexity-User/1\.0" [NC] RewriteRule .* - [S=30] # ------------------------------------------------------------ # A2 — Google Chrome (any real version) on Windows 10/11 # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "Windows NT (10|11)\.[0-9].*Chrome/1[4-9][0-9]\.[0-9]+\.[0-9]+\.[0-9]+" [NC] RewriteRule .* - [S=30] # ------------------------------------------------------------ # A3 — Microsoft Edge (Edg/ token) on any OS # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "Edg/[0-9]+" [NC] RewriteRule .* - [S=30] # ------------------------------------------------------------ # A4 — Mozilla Firefox on Windows, Mac, Linux # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "Firefox/[0-9]+" [NC] RewriteRule .* - [S=30] # ------------------------------------------------------------ # A5 — Apple Safari on macOS (not Chrome, not Firefox) # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "Macintosh.*Safari/[0-9]+" [NC] RewriteCond %{HTTP_USER_AGENT} "!Chrome/" [NC] RewriteCond %{HTTP_USER_AGENT} "!Chromium/" [NC] RewriteRule .* - [S=30] # ------------------------------------------------------------ # A6 — Safari on iPhone (iOS 14+) # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "iPhone.*CPU iPhone OS 1[4-9]_" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "iPhone.*CPU iPhone OS [2-9][0-9]_" [NC] RewriteRule .* - [S=30] # ------------------------------------------------------------ # A7 — Safari on iPad (iPadOS 14+) # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "iPad.*CPU OS 1[4-9]_" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "iPad.*CPU OS [2-9][0-9]_" [NC] RewriteRule .* - [S=30] # ------------------------------------------------------------ # A8 — Opera browser (OPR/ or Opera/ token) # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "(OPR/|Opera/)[0-9]+" [NC] RewriteRule .* - [S=30] # ------------------------------------------------------------ # A10 — Chrome on Android (real modern Android users) # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "Android.*Chrome/[9][0-9]\." [NC,OR] RewriteCond %{HTTP_USER_AGENT} "Android.*Chrome/1[0-9][0-9]\." [NC] RewriteRule .* - [S=30] # ------------------------------------------------------------ # A11 — Samsung Internet browser # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "SamsungBrowser/[0-9]+" [NC] RewriteRule .* - [S=30] # ------------------------------------------------------------ # A12 — SEO crawlers # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "(Googlebot|bingbot|DuckDuckBot)" [NC] RewriteRule .* - [S=30] # ------------------------------------------------------------ # A13 — Chrome on macOS (real non-zero-patch builds) # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "Macintosh.*Chrome/1[0-9][0-9]\.[0-9]+\.[0-9]+\.[0-9]+" [NC] RewriteCond %{HTTP_USER_AGENT} "!\.0\.0\.0" [NC] RewriteRule .* - [S=30] # ------------------------------------------------------------ # A14 — Chrome on Linux desktop (real non-zero-patch builds) # ------------------------------------------------------------ RewriteCond %{HTTP_USER_AGENT} "X11; Linux x86_64.*Chrome/1[0-9][0-9]\.[0-9]+\.[0-9]+\.[0-9]+" [NC] RewriteCond %{HTTP_USER_AGENT} "!\.0\.0\.0" [NC] RewriteRule .* - [S=30] # ============================================================ # SECTION B — PAYMENT/CHECKOUT WHITELIST # ============================================================ RewriteCond %{REQUEST_URI} ^/(payment|checkout|prox-payment\.php|prox-checkout\.php) [NC] RewriteRule .* - [S=20] # ============================================================ # SECTION C — BOT BLOCKING RULES (Rules 0–11) # ============================================================ RewriteCond %{HTTP_USER_AGENT} "Mozilla/5\.0 \(iPhone; CPU iPhone OS 13_2_3 like Mac OS X\) AppleWebKit/605\.1\.15 \(KHTML, like Gecko\) Version/13\.0\.3 Mobile/15E148 Safari/604\.1" [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "Windows NT 10\.0; Win64; x64" [NC] RewriteCond %{HTTP_USER_AGENT} "Chrome/(9[0-9]|1[0-3][0-9]|14[0-4])\.0\.0\.0" [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "Windows NT 10\.0; Win64; x64.*Chrome/133\.0\.6943\.141" [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "Windows NT 10\.0; Win64; x64.*Chrome/99\.0\.4844\.51" [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "Windows NT 10\.0; Win64; x64.*Chrome/104\.0\.5112\.81" [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "Windows NT 10\.0; Win64; x64.*Chrome/106\.0\.5249\.119" [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "Windows NT" [NC] RewriteCond %{HTTP_USER_AGENT} "Chrome/[0-9]{1,2}\." [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "Macintosh" [NC] RewriteCond %{HTTP_USER_AGENT} "Chrome/[0-9]{1,2}\." [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "Windows NT 6\.1" [NC] RewriteCond %{HTTP_USER_AGENT} "Chrome/(1[1-9][0-9]|[2-9][0-9]{2})\." [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "Windows NT 6\.1.*Chrome/126\.0\.6478\.114" [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "iPhone.*CPU iPhone OS 1[0-1]_" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "iPhone.*CPU iPhone OS 13_" [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "Linux; U; Android" [NC] RewriteCond %{HTTP_USER_AGENT} "zh-cn" [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "Chrome/(39|4[0-9]|5[0-9]|60)\." [NC] RewriteCond %{HTTP_USER_AGENT} "(Android|Mobile)" [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} "X11; Linux aarch64" [NC] RewriteCond %{HTTP_USER_AGENT} "Chrome/(9[0-9]|1[0-3][0-9]|14[0-5])\.0\.0\.0" [NC] RewriteRule .* - [F,L] RewriteCond %{HTTP_USER_AGENT} ^-?$ [NC,OR] RewriteCond %{HTTP_USER_AGENT} (ahrefsbot|semrushbot|dotbot|mj12bot|blexbot|rogerbot|exabot|gigabot|baiduspider|yandexbot) [NC,OR] RewriteCond %{HTTP_USER_AGENT} (masscan|nikto|sqlmap|nmap|zgrab|nuclei|dirbuster|acunetix|nessus|havij) [NC,OR] RewriteCond %{HTTP_USER_AGENT} (phantomjs|headlesschrome|headless|python-requests|go-http-client) [NC,OR] RewriteCond %{HTTP_USER_AGENT} (curl\/|wget\/|libwww-perl|java\/|jakarta|httpclient) [NC,OR] RewriteCond %{HTTP_USER_AGENT} (spambot|harvest|emailcollector|emailwolf|emailreaper|scraper|grabber) [NC] RewriteRule .* - [F,L] # ============================================================ # END BOT BLOCKING — USER AGENTS # ============================================================ # Hide directory listings Options -Indexes DirectoryIndex index.php index.html # No font warnings please AddType font/ttf .ttf AddType font/eot .eot AddType font/otf .otf AddType font/woff .woff # Security Control Order Allow,Deny Deny from all # Cache Control Header set Cache-Control "max-age=604800, public" # Gzip Control AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE image/jpg AddOutputFilterByType DEFLATE image/png AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/javascript RewriteEngine On # Force HTTPS — applies to both essaybishops.com AND bishopswritingbureau.com RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] RewriteRule . - [E=REWRITEBASE:/] RewriteBase / # updates RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^updates/?$ prox-updates.php [L,QSA] # order RewriteRule ^order/?$ prox-order.php?view=order [L,QSA] RewriteRule ^order-now/?$ prox-order.php?view=order [L,QSA] RewriteRule ^place-order/?$ prox-order.php?view=order [L,QSA] RewriteRule ^class-help/?$ prox-classhelp.php?view=classhelp [L,QSA] RewriteRule ^inquiry/?$ prox-inquiry.php?view=inquiry [L,QSA] # ── FIX 2: Dashboard rules — must use [L,QSA] and come before WordPress catch-all ── RewriteRule ^dashboard/?$ prox-dashboard.php?view=orders [L,QSA] RewriteRule ^dashboard/([^/]+)/?$ prox-dashboard.php?view=$1 [L,QSA] RewriteRule ^dashboard/([^/]+)/([^/]+)/?$ prox-dashboard.php?view=$1&action=$2 [L,QSA] RewriteRule ^dashboard/([^/]+)/([^/]+)/([^/]+)/?$ prox-dashboard.php?view=$1&action=$2 [L,QSA] # ── END FIX 2 ──────────────────────────────────────────────────────────────────── # papers RewriteRule ^papers/?$ prox-papers.php?do=listPapers [L,QSA] RewriteRule ^papers/download/([^/]+)/?$ prox-papers.php?do=download&file_id=$1 [L,QSA] RewriteRule ^papers.xml/?$ prox-papers.php?do=sitemap [L,QSA] RewriteRule ^paper/([^/]+)/?$ prox-papers.php?slug=$1&do=showPaper [L,QSA] # Checkout RewriteRule ^checkout/([^/]+)/([^/]+)/([^/]+)/?$ prox-checkout.php?paymentMethod=$1&paymentNodeType=$2&paymentNodeId=$3 [L,QSA] # Payment RewriteRule ^payment/([^/]+)/([^/]+)/?$ prox-payment.php?paymentMethod=$1&status=$2 [L,QSA] RewriteRule ^payment/([^/]+)/?$ prox-payment.php?paymentMethod=paypal&paymentNodeType=$1 [L,QSA] RewriteRule ^install/?$ prox-install.php [L,QSA] # BEGIN WordPress # The directives (lines) between "BEGIN WordPress" and "END WordPress" are # dynamically generated, and should only be modified via WordPress filters. # Any changes to the directives between these markers will be overwritten. RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] # ── FIX 3: Exclude portal app paths from WordPress catch-all ───────────────── RewriteCond %{REQUEST_URI} !^/(dashboard|order$|order-now|place-order|class-help|inquiry|papers|checkout|payment|install|updates)(/|$) [NC] # ── END FIX 3 ──────────────────────────────────────────────────────────────── RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress # Fix $HTTP_RAW_POST_DATA deprecated warning php_value always_populate_raw_post_data -1 # enable hiding .php extension # ── FIX 4: Added RewriteEngine On ──────────────────────────────────────────── RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^([^/]+)$ $1.php # ── END FIX 4 ──────────────────────────────────────────────────────────────── order allow,deny allow from all # BEGIN cPanel-generated php ini directives, do not edit php_value memory_limit -1 php_value post_max_size 1024M php_value upload_max_filesize 1024M php_flag display_errors Off php_value max_execution_time 300 php_value max_input_time 600 php_value max_input_vars 1000 php_value session.gc_maxlifetime 1440 php_value session.save_path "/var/cpanel/php/sessions/ea-php80" php_flag zlib.output_compression Off php_value memory_limit -1 php_value post_max_size 1024M php_value upload_max_filesize 1024M php_flag display_errors Off php_value max_execution_time 300 php_value max_input_time 600 php_value max_input_vars 1000 php_value session.gc_maxlifetime 1440 php_value session.save_path "/var/cpanel/php/sessions/ea-php80" php_flag zlib.output_compression Off # END cPanel-generated php ini directives, do not edit # BEGIN LiteSpeed SetEnv noabort 1 # END LiteSpeed # ── Blog/special-page redirects scoped per domain ──────────────────────────── RewriteCond %{HTTP_HOST} ^essaybishops\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.essaybishops\.com$ RewriteRule ^blog$ "https\:\/\/www\.colapapers\.com\/" [R=301,L] RewriteCond %{HTTP_HOST} ^essaybishops\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.essaybishops\.com$ RewriteRule ^dissertation\-help$ "https\:\/\/homeworkacetutors\.com\/" [R=301,L] RewriteCond %{HTTP_HOST} ^bishopswritingbureau\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.bishopswritingbureau\.com$ RewriteRule ^blog$ "https\:\/\/essaybishops\.com\/" [R=301,L] RewriteCond %{HTTP_HOST} ^tropicalessays\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.tropicalessays\.com$ RewriteRule ^blog$ "https\:\/\/essaybishops\.com\/" [R=301,L] # ── END per-domain redirects ────────────────────────────────────────────────── # BEGIN cPanel-generated php ini directives, do not edit php_value memory_limit -1 php_value post_max_size 1024M php_value upload_max_filesize 1024M php_flag display_errors Off php_value max_execution_time 300 php_value max_input_time 600 php_value max_input_vars 1000 php_value session.gc_maxlifetime 1440 php_value session.save_path "/var/cpanel/php/sessions/ea-php74" php_flag zlib.output_compression Off php_value memory_limit -1 php_value post_max_size 1024M php_value upload_max_filesize 1024M php_flag display_errors Off php_value max_execution_time 300 php_value max_input_time 600 php_value max_input_vars 1000 php_value session.gc_maxlifetime 1440 php_value session.save_path "/var/cpanel/php/sessions/ea-php74" php_flag zlib.output_compression Off # END cPanel-generated php ini directives, do not edit deny from 43.0.0.0/8 deny from 116.179.33.21 deny from 116.179.33.0/24 # php -- BEGIN cPanel-generated handler, do not edit # Set the "ea-php74" package as the default "PHP" programming language. AddHandler application/x-httpd-ea-php74 .php .php7 .phtml # php -- END cPanel-generated handler, do not edit