From 65ff0a4d38d2a276ff785d542785781288d8111b Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Thu, 22 Sep 2016 16:29:58 +1200 Subject: [PATCH] BUG Fix incorrect backslash escaping in htaccess template --- .../Assets/Flysystem/PublicAssetAdapter_HTAccess.ss | 4 ++-- tests/filesystem/AssetAdapterTest.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/SilverStripe/Assets/Flysystem/PublicAssetAdapter_HTAccess.ss b/templates/SilverStripe/Assets/Flysystem/PublicAssetAdapter_HTAccess.ss index 3e76eedfe..54b33a129 100644 --- a/templates/SilverStripe/Assets/Flysystem/PublicAssetAdapter_HTAccess.ss +++ b/templates/SilverStripe/Assets/Flysystem/PublicAssetAdapter_HTAccess.ss @@ -14,10 +14,10 @@ # Allow error pages RewriteCond %{REQUEST_FILENAME} -f - RewriteRule error[^\\/]*\.html$ - [L] + RewriteRule error[^\\\\/]*\\.html$ - [L] # Block invalid file extensions - RewriteCond %{REQUEST_URI} !\.(?i:<% loop $AllowedExtensions %>$Extension<% if not $Last %>|<% end_if %><% end_loop %>)$ + RewriteCond %{REQUEST_URI} !\\.(?i:<% loop $AllowedExtensions %>$Extension<% if not $Last %>|<% end_if %><% end_loop %>)$ RewriteRule .* - [F] # Non existant files passed to requesthandler diff --git a/tests/filesystem/AssetAdapterTest.php b/tests/filesystem/AssetAdapterTest.php index b15586efe..90b7465e9 100644 --- a/tests/filesystem/AssetAdapterTest.php +++ b/tests/filesystem/AssetAdapterTest.php @@ -44,14 +44,14 @@ class AssetAdapterTest extends SapphireTest { $htaccess = $adapter->read('.htaccess'); $content = $htaccess['contents']; // Allowed extensions set - $this->assertContains('RewriteCond %{REQUEST_URI} !.(?i:', $content); + $this->assertContains('RewriteCond %{REQUEST_URI} !\\.(?i:', $content); foreach(File::config()->allowed_extensions as $extension) { $this->assertRegExp('/\b'.preg_quote($extension).'\b/', $content); } // Rewrite rules $this->assertContains('RewriteRule .* ../framework/main.php?url=%1 [QSA]', $content); - $this->assertContains('RewriteRule error[^\\/]*.html$ - [L]', $content); + $this->assertContains('RewriteRule error[^\\\\/]*\\.html$ - [L]', $content); // Test flush restores invalid content \file_put_contents($this->rootDir . '/.htaccess', '# broken content');