404 loading issues are updated
3839
package-lock.json
generated
15
package.json
@ -7,7 +7,9 @@
|
||||
"build": "next build && node scripts/copy-server-config.cjs",
|
||||
"start": "next start",
|
||||
"lint": "eslint",
|
||||
"sitemap": "node scripts/generate-sitemap.cjs"
|
||||
"sitemap": "node scripts/generate-sitemap.cjs",
|
||||
"optimize-images": "node scripts/optimize-images.mjs",
|
||||
"postbuild": "npm run optimize-images"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^1.13.2",
|
||||
@ -27,7 +29,12 @@
|
||||
"@types/react-google-recaptcha": "^2.1.9",
|
||||
"eslint": "^9",
|
||||
"eslint-config-next": "16.0.3",
|
||||
"typescript": "^5",
|
||||
"selenium-webdriver": "^4.38.0"
|
||||
"imagemin": "^9.0.1",
|
||||
"imagemin-avif": "^0.1.6",
|
||||
"imagemin-mozjpeg": "^10.0.0",
|
||||
"imagemin-optipng": "^8.0.0",
|
||||
"imagemin-webp": "^8.0.0",
|
||||
"selenium-webdriver": "^4.38.0",
|
||||
"typescript": "^5"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,28 +13,8 @@
|
||||
# 1. Custom 404 handling
|
||||
ErrorDocument 404 /404.html
|
||||
|
||||
# 2. Handle trailing slashes strictly
|
||||
# If request is a file, serve it directly
|
||||
RewriteCond %{REQUEST_FILENAME} -f
|
||||
RewriteRule ^ - [L]
|
||||
|
||||
# If request is a directory, serve the index.html inside it
|
||||
RewriteCond %{REQUEST_FILENAME} -d
|
||||
RewriteRule ^(.*[^/])$ $1/ [R=301,L]
|
||||
|
||||
# Rewrite all folder requests to their index.html
|
||||
RewriteCond %{REQUEST_FILENAME} -d
|
||||
RewriteRule ^(.*)/$ $1/index.html [L]
|
||||
|
||||
# 4. Fallback for clean URLs (if folder detection fails but index.html exists)
|
||||
RewriteCond %{DOCUMENT_ROOT}/$1/index.html -f
|
||||
RewriteRule ^(.*)/$ $1/index.html [L]
|
||||
|
||||
# 4. Fallback for clean URLs (just in case)
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
RewriteRule ^(.*)$ $1.html [L]
|
||||
# 2. Standard directory handling (Optional explicitly, usually default)
|
||||
DirectoryIndex index.html
|
||||
</IfModule>
|
||||
|
||||
# Security Headers
|
||||
|
||||
BIN
public/images-optimized/about-testimonial-bg.jpg
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
public/images-optimized/about-testimonial-bg.webp
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/images-optimized/antalya-logo.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
public/images-optimized/antalya-logo.webp
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
public/images-optimized/avatar-anya.png
Normal file
|
After Width: | Height: | Size: 122 KiB |
BIN
public/images-optimized/avatar-anya.webp
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
public/images-optimized/avatar-emily.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
public/images-optimized/avatar-emily.webp
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
public/images-optimized/avatar-michael.png
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
public/images-optimized/avatar-michael.webp
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
public/images-optimized/avatar-sarah.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
BIN
public/images-optimized/avatar-sarah.webp
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/images-optimized/avatar-tariq.png
Normal file
|
After Width: | Height: | Size: 138 KiB |
BIN
public/images-optimized/avatar-tariq.webp
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
public/images-optimized/avatar-tuest.png
Normal file
|
After Width: | Height: | Size: 163 KiB |
BIN
public/images-optimized/avatar-tuest.webp
Normal file
|
After Width: | Height: | Size: 77 KiB |
BIN
public/images-optimized/avif/about-testimonial-bg.jpg
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
public/images-optimized/avif/antalya-logo.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
public/images-optimized/avif/avatar-anya.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
public/images-optimized/avif/avatar-emily.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public/images-optimized/avif/avatar-michael.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
public/images-optimized/avif/avatar-sarah.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
public/images-optimized/avif/avatar-tariq.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
public/images-optimized/avif/avatar-tuest.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
public/images-optimized/avif/catering-categories.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
public/images-optimized/avif/catering-delivery.png
Normal file
|
After Width: | Height: | Size: 8.5 KiB |
BIN
public/images-optimized/avif/catering-orbital.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/images-optimized/avif/cloche-icon.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
public/images-optimized/avif/dinner.png
Normal file
|
After Width: | Height: | Size: 671 B |
BIN
public/images-optimized/avif/dish.png
Normal file
|
After Width: | Height: | Size: 895 B |
BIN
public/images-optimized/avif/eat.png
Normal file
|
After Width: | Height: | Size: 782 B |
BIN
public/images-optimized/avif/email.png
Normal file
|
After Width: | Height: | Size: 663 B |
BIN
public/images-optimized/avif/footer-bg.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
public/images-optimized/avif/footer.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
public/images-optimized/avif/fork-icon.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
public/images-optimized/avif/header-logo.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
public/images-optimized/avif/logo-header.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
public/images-optimized/avif/marble-bg.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
public/images-optimized/avif/phone-call.png
Normal file
|
After Width: | Height: | Size: 708 B |
BIN
public/images-optimized/avif/section-bg.jpg
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
public/images-optimized/catering-categories.png
Normal file
|
After Width: | Height: | Size: 207 KiB |
BIN
public/images-optimized/catering-categories.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
public/images-optimized/catering-delivery.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
public/images-optimized/catering-delivery.webp
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
public/images-optimized/catering-orbital.png
Normal file
|
After Width: | Height: | Size: 265 KiB |
BIN
public/images-optimized/catering-orbital.webp
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
public/images-optimized/cloche-icon.png
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
public/images-optimized/cloche-icon.webp
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
public/images-optimized/dinner.png
Normal file
|
After Width: | Height: | Size: 467 B |
BIN
public/images-optimized/dinner.webp
Normal file
|
After Width: | Height: | Size: 320 B |
BIN
public/images-optimized/dish.png
Normal file
|
After Width: | Height: | Size: 893 B |
BIN
public/images-optimized/dish.webp
Normal file
|
After Width: | Height: | Size: 568 B |
BIN
public/images-optimized/eat.png
Normal file
|
After Width: | Height: | Size: 785 B |
BIN
public/images-optimized/eat.webp
Normal file
|
After Width: | Height: | Size: 464 B |
BIN
public/images-optimized/email.png
Normal file
|
After Width: | Height: | Size: 409 B |
BIN
public/images-optimized/email.webp
Normal file
|
After Width: | Height: | Size: 290 B |
BIN
public/images-optimized/footer-bg.png
Normal file
|
After Width: | Height: | Size: 319 KiB |
BIN
public/images-optimized/footer-bg.webp
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
public/images-optimized/footer.png
Normal file
|
After Width: | Height: | Size: 717 KiB |
BIN
public/images-optimized/footer.webp
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
public/images-optimized/fork-icon.png
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
public/images-optimized/fork-icon.webp
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
public/images-optimized/header-logo.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
public/images-optimized/header-logo.webp
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
public/images-optimized/logo-header.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
public/images-optimized/logo-header.webp
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
public/images-optimized/marble-bg.png
Normal file
|
After Width: | Height: | Size: 153 KiB |
BIN
public/images-optimized/marble-bg.webp
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
public/images-optimized/phone-call.png
Normal file
|
After Width: | Height: | Size: 577 B |
BIN
public/images-optimized/phone-call.webp
Normal file
|
After Width: | Height: | Size: 374 B |
BIN
public/images-optimized/section-bg.jpg
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
public/images-optimized/section-bg.webp
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/images-optimized/webp/about-testimonial-bg.webp
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
public/images-optimized/webp/antalya-logo.webp
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
public/images-optimized/webp/avatar-anya.webp
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
public/images-optimized/webp/avatar-emily.webp
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
public/images-optimized/webp/avatar-michael.webp
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
public/images-optimized/webp/avatar-sarah.webp
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
public/images-optimized/webp/avatar-tariq.webp
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
public/images-optimized/webp/avatar-tuest.webp
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
public/images-optimized/webp/catering-categories.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
public/images-optimized/webp/catering-delivery.webp
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
public/images-optimized/webp/catering-orbital.webp
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
public/images-optimized/webp/cloche-icon.webp
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
public/images-optimized/webp/dinner.webp
Normal file
|
After Width: | Height: | Size: 320 B |
BIN
public/images-optimized/webp/dish.webp
Normal file
|
After Width: | Height: | Size: 568 B |
BIN
public/images-optimized/webp/eat.webp
Normal file
|
After Width: | Height: | Size: 464 B |
BIN
public/images-optimized/webp/email.webp
Normal file
|
After Width: | Height: | Size: 290 B |
BIN
public/images-optimized/webp/footer-bg.webp
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
public/images-optimized/webp/footer.webp
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
public/images-optimized/webp/fork-icon.webp
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images-optimized/webp/header-logo.webp
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
public/images-optimized/webp/logo-header.webp
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
public/images-optimized/webp/marble-bg.webp
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
public/images-optimized/webp/phone-call.webp
Normal file
|
After Width: | Height: | Size: 374 B |
BIN
public/images-optimized/webp/section-bg.webp
Normal file
|
After Width: | Height: | Size: 50 KiB |
@ -26,25 +26,6 @@
|
||||
<remove statusCode="404" />
|
||||
<error statusCode="404" path="/404.html" responseMode="ExecuteURL" />
|
||||
</httpErrors>
|
||||
<rewrite>
|
||||
<rules>
|
||||
<rule name="Trailing Slash Enforce" stopProcessing="true">
|
||||
<match url="(.*[^/])$" />
|
||||
<conditions>
|
||||
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
|
||||
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
|
||||
</conditions>
|
||||
<action type="Redirect" redirectType="Permanent" url="{R:1}/" />
|
||||
</rule>
|
||||
<rule name="React Routes" stopProcessing="true">
|
||||
<match url="(.*)/$" />
|
||||
<conditions>
|
||||
<add input="{REQUEST_FILENAME}index.html" matchType="IsFile" />
|
||||
</conditions>
|
||||
<action type="Rewrite" url="{R:1}/index.html" />
|
||||
</rule>
|
||||
</rules>
|
||||
</rewrite>
|
||||
<modules runAllManagedModulesForAllRequests="true"/>
|
||||
</system.webServer>
|
||||
</configuration>
|
||||
|
||||