diff --git a/public/.htaccess b/public/.htaccess index 2b71b1c..6ffc888 100644 --- a/public/.htaccess +++ b/public/.htaccess @@ -1,37 +1,40 @@ # Antalya Restaurant - Apache Configuration -# SIMPLIFIED - Fixes 404 errors on refresh/new tab 100% +# FIXED - Handles Next.js static export with trailing slashes 100% RewriteEngine On RewriteBase / - # Prevent directory listing + # Prevent directory listing and disable MultiViews (Critical for Next.js) Options -Indexes + Options +FollowSymLinks + Options -MultiViews - # Skip if file exists + # 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] - # Skip if directory exists + # If request is a directory, serve the index.html inside it RewriteCond %{REQUEST_FILENAME} -d - RewriteRule ^ - [L] + RewriteRule ^(.*[^/])$ $1/ [R=301,L] - # Add trailing slash if missing and directory exists - RewriteCond %{REQUEST_URI} !(.*)/$ - RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}/ -d - RewriteRule ^(.*)$ $1/ [R=301,L] + # Rewrite all folder requests to their index.html + RewriteCond %{REQUEST_FILENAME} -d + RewriteRule ^(.*)/$ $1/index.html [L] - # Serve index.html from directory if it exists - RewriteCond %{REQUEST_URI} (.*)/$ - RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}index.html -f - RewriteRule ^(.*)$ %{DOCUMENT_ROOT}%{REQUEST_URI}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] - # Fallback: try to serve as directory with index.html - RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}/index.html -f - RewriteRule ^(.*)$ %{DOCUMENT_ROOT}%{REQUEST_URI}/index.html [L] - - # Custom 404 page - ErrorDocument 404 /404.html + # 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] # Security Headers @@ -39,19 +42,24 @@ Header set X-Content-Type-Options "nosniff" Header set X-Frame-Options "DENY" Header set X-XSS-Protection "1; mode=block" + Header set Referrer-Policy "strict-origin-when-cross-origin" # Cache Control ExpiresActive On + ExpiresDefault "access plus 1 month" + ExpiresByType text/html "access plus 0 seconds" + ExpiresByType text/xml "access plus 0 seconds" + ExpiresByType application/xml "access plus 0 seconds" + ExpiresByType application/json "access plus 0 seconds" ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/webp "access plus 1 year" ExpiresByType image/svg+xml "access plus 1 year" - ExpiresByType text/css "access plus 1 year" - ExpiresByType text/javascript "access plus 1 year" - ExpiresByType application/javascript "access plus 1 year" ExpiresByType image/x-icon "access plus 1 year" + ExpiresByType application/javascript "access plus 1 year" + ExpiresByType text/css "access plus 1 year" diff --git a/public/images/dish-1.png b/public/images/dish-1.png deleted file mode 100644 index 7b3a3bb..0000000 Binary files a/public/images/dish-1.png and /dev/null differ diff --git a/public/images/dish-2.png b/public/images/dish-2.png deleted file mode 100644 index d361f4d..0000000 Binary files a/public/images/dish-2.png and /dev/null differ diff --git a/public/images/hero-1.png b/public/images/hero-1.png deleted file mode 100644 index ded0536..0000000 Binary files a/public/images/hero-1.png and /dev/null differ diff --git a/public/images/hero-2.png b/public/images/hero-2.png deleted file mode 100644 index 5f752a3..0000000 Binary files a/public/images/hero-2.png and /dev/null differ diff --git a/public/images/hero-3.png b/public/images/hero-3.png deleted file mode 100644 index f0325b2..0000000 Binary files a/public/images/hero-3.png and /dev/null differ diff --git a/public/images/restaurant-interior.png b/public/images/restaurant-interior.png deleted file mode 100644 index 7b0d9df..0000000 Binary files a/public/images/restaurant-interior.png and /dev/null differ diff --git a/public/images/testimonial.png b/public/images/testimonial.png deleted file mode 100644 index be9fa9f..0000000 Binary files a/public/images/testimonial.png and /dev/null differ diff --git a/public/images/testimonials-bg.png b/public/images/testimonials-bg.png deleted file mode 100644 index b006892..0000000 Binary files a/public/images/testimonials-bg.png and /dev/null differ diff --git a/public/web.config b/public/web.config index 71ac777..1415644 100644 --- a/public/web.config +++ b/public/web.config @@ -18,7 +18,7 @@ - + @@ -28,13 +28,20 @@ - - + + - + + + + + + + + diff --git a/scripts/image_alt_issues.csv b/scripts/image_alt_issues.csv index ca80bae..a4213bc 100644 --- a/scripts/image_alt_issues.csv +++ b/scripts/image_alt_issues.csv @@ -1,55 +1 @@ Page URL,Image Src,Alt Text,Issue Type -"http://localhost:3000/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"https://antalya.metatronnest.com/book-a-table/","","Antalya Restaurant","Duplicate Alt (3 times)" -"https://antalya.metatronnest.com/book-a-table/","","Phone","Duplicate Alt (2 times)" -"http://localhost:3000/about-antalya-restaurant/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/about-antalya-restaurant/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/about-antalya-restaurant/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/about-antalya-restaurant/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/about-antalya-restaurant/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/about-antalya-restaurant/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/about-antalya-restaurant/","","Antalya Restaurant Header Logo","Duplicate Alt (2 times)" -"http://localhost:3000/about-antalya-restaurant/","","Antalya Dinner Icon","Duplicate Alt (3 times)" -"http://localhost:3000/about-antalya-restaurant/","","Antalya Cutlery Icon","Duplicate Alt (3 times)" -"http://localhost:3000/antalya-restaurant-menu/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/antalya-restaurant-menu/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/antalya-restaurant-menu/","","Antalya Restaurant Header Logo","Duplicate Alt (2 times)" -"http://localhost:3000/antalya-restaurant-gallery/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/antalya-restaurant-gallery/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/antalya-restaurant-gallery/","","Antalya Restaurant Header Logo","Duplicate Alt (2 times)" -"http://localhost:3000/catering-services-ontario/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/catering-services-ontario/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/catering-services-ontario/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/catering-services-ontario/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/catering-services-ontario/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/catering-services-ontario/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/catering-services-ontario/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/catering-services-ontario/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/catering-services-ontario/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/catering-services-ontario/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/catering-services-ontario/","","Antalya Restaurant Header Logo","Duplicate Alt (2 times)" -"http://localhost:3000/book-a-table/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/book-a-table/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/book-a-table/","","Antalya Restaurant Header Logo","Duplicate Alt (2 times)" -"https://antalya.metatronnest.com/antalya-turkish-food-blog/","","Antalya Restaurant","Duplicate Alt (3 times)" -"https://antalya.metatronnest.com/antalya-turkish-food-blog/","","icon","Duplicate Alt (2 times)" -"https://antalya.metatronnest.com/antalya-turkish-food-blog/","","Phone","Duplicate Alt (2 times)" -"http://localhost:3000/antalya-turkish-food-blog/","http://localhost:3000/images/dinner.png","(empty)","Empty Alt" -"http://localhost:3000/antalya-turkish-food-blog/","http://localhost:3000/images/eat.png","(empty)","Empty Alt" -"http://localhost:3000/antalya-turkish-food-blog/","","Antalya Restaurant Header Logo","Duplicate Alt (2 times)" -"http://localhost:3000/antalya-turkish-food-blog/the-art-of-turkish-tea/","","Antalya Restaurant Header Logo","Duplicate Alt (2 times)" -"http://localhost:3000/antalya-turkish-food-blog/secrets-of-charcoal-grilling/","","Antalya Restaurant Header Logo","Duplicate Alt (2 times)" -"http://localhost:3000/antalya-turkish-food-blog/a-taste-of-sweet-legacy/","","Antalya Restaurant Header Logo","Duplicate Alt (2 times)" -"https://antalya.metatronnest.com/antalya-turkish-food-blog/the-art-of-turkish-tea/","","Antalya Restaurant","Duplicate Alt (3 times)" -"https://antalya.metatronnest.com/antalya-turkish-food-blog/the-art-of-turkish-tea/","","Phone","Duplicate Alt (2 times)" -"https://antalya.metatronnest.com/antalya-turkish-food-blog/secrets-of-charcoal-grilling/","","Antalya Restaurant","Duplicate Alt (3 times)" -"https://antalya.metatronnest.com/antalya-turkish-food-blog/secrets-of-charcoal-grilling/","","Phone","Duplicate Alt (2 times)" diff --git a/src/app/about-antalya-restaurant/AboutContent.tsx b/src/app/about-antalya-restaurant/AboutContent.tsx index dfe9903..4188bf5 100644 --- a/src/app/about-antalya-restaurant/AboutContent.tsx +++ b/src/app/about-antalya-restaurant/AboutContent.tsx @@ -1,6 +1,5 @@ 'use client' -import Navbar from "@/components/Navbar/Navbar"; import Footer from "@/components/Footer/Footer"; import FAQ from "@/components/FAQ/FAQ"; import Image from "next/image"; @@ -85,7 +84,7 @@ export default function AboutContent() { return (
- + {/* Hero Banner */}
- Antalya Dinner Icon + Our Story Decorative Dinner Icon ANTALYA - Antalya Cutlery Icon + Our Story Decorative Cutlery Icon

Our Story

@@ -140,9 +139,9 @@ export default function AboutContent() { {/* Features Section - With real images */}

- Antalya Dinner Icon + Features Section Dinner Icon ANTALYA - Antalya Cutlery Icon + Features Section Cutlery Icon
- + Why Choose Us Dinner Icon ANTALYA - + Why Choose Us Cutlery Icon

Why Choose Us

@@ -209,9 +208,9 @@ export default function AboutContent() { {/* Testimonials Section - Auto Slider */}

- Antalya Dinner Icon + Testimonials Section Dinner Icon ANTALYA - Antalya Cutlery Icon + Testimonials Section Cutlery Icon
- + FAQ Section Decorative Dinner Icon ANTALYA - + FAQ Section Decorative Cutlery Icon

FAQ – Your Questions Answered

@@ -336,9 +335,9 @@ export default function AboutContent() { >

- Antalya Dinner Icon + About CTA Dinner Icon ANTALYA - Antalya Cutlery Icon + About CTA Cutlery Icon
- +
- Antalya Dinner Icon + Gallery Section Decorative Dinner Icon ANTALYA - Antalya Cutlery Icon + Gallery Section Decorative Cutlery Icon

A Visual Journey Through Authentic Turkish Dining

diff --git a/src/app/antalya-restaurant-menu/MenuContent.tsx b/src/app/antalya-restaurant-menu/MenuContent.tsx index 316ca8f..7a91de6 100644 --- a/src/app/antalya-restaurant-menu/MenuContent.tsx +++ b/src/app/antalya-restaurant-menu/MenuContent.tsx @@ -1,7 +1,6 @@ 'use client' import { useState } from 'react'; -import Navbar from "@/components/Navbar/Navbar"; import Footer from "@/components/Footer/Footer"; import Image from "next/image"; import Link from "next/link"; @@ -74,7 +73,6 @@ export default function MenuPage() { return (

-
- + Menu Section Decorative Dinner Icon ANTALYA - + Menu Section Decorative Cutlery Icon

Delicious Turkish Flavours, Mezze, and More

diff --git a/src/app/antalya-turkish-food-blog/BlogContent.tsx b/src/app/antalya-turkish-food-blog/BlogContent.tsx index 1e2ed74..235b3f6 100644 --- a/src/app/antalya-turkish-food-blog/BlogContent.tsx +++ b/src/app/antalya-turkish-food-blog/BlogContent.tsx @@ -1,6 +1,6 @@ 'use client' -import Navbar from "@/components/Navbar/Navbar"; + import Footer from "@/components/Footer/Footer"; import Image from "next/image"; import Link from "next/link"; @@ -48,7 +48,7 @@ export default function BlogContent() { return (

- +
- + Blog Section Decorative Dinner Icon ANTALYA - + Blog Section Decorative Cutlery Icon

Stories Crafted Through Flavor & Celebration

diff --git a/src/app/antalya-turkish-food-blog/[id]/page.tsx b/src/app/antalya-turkish-food-blog/[id]/page.tsx index 0ce4397..f3095d5 100644 --- a/src/app/antalya-turkish-food-blog/[id]/page.tsx +++ b/src/app/antalya-turkish-food-blog/[id]/page.tsx @@ -1,4 +1,4 @@ -import Navbar from "@/components/Navbar/Navbar"; + import Footer from "@/components/Footer/Footer"; import FAQ from "@/components/FAQ/FAQ"; import Image from "next/image"; @@ -52,7 +52,7 @@ export default async function BlogDetailPage({ params }: { params: Promise<{ id: if (!blog) { return (

- +

Blog Post Not Found

Back to Blog @@ -64,7 +64,7 @@ export default async function BlogDetailPage({ params }: { params: Promise<{ id: return (
- + {/* Banner Section */}
@@ -91,6 +91,7 @@ export default async function BlogDetailPage({ params }: { params: Promise<{ id: width={1200} height={600} style={{ objectFit: 'cover' }} + loading="lazy" />
)} diff --git a/src/app/book-a-table/ContactContent.tsx b/src/app/book-a-table/ContactContent.tsx index 10463d1..f024b46 100644 --- a/src/app/book-a-table/ContactContent.tsx +++ b/src/app/book-a-table/ContactContent.tsx @@ -3,7 +3,7 @@ import { useState, useEffect } from "react"; import ReCAPTCHA from "react-google-recaptcha"; import axios from "axios"; -import Navbar from "@/components/Navbar/Navbar"; + import Footer from "@/components/Footer/Footer"; import Image from "next/image"; import Link from "next/link"; @@ -136,7 +136,7 @@ export default function ContactContent() { return (
- +
- + Contact Section Decorative Dinner Icon ANTALYA - + Contact Section Decorative Cutlery Icon

Book a Table

diff --git a/src/app/catering-services-ontario/CateringContent.tsx b/src/app/catering-services-ontario/CateringContent.tsx index 00e6512..bb4d968 100644 --- a/src/app/catering-services-ontario/CateringContent.tsx +++ b/src/app/catering-services-ontario/CateringContent.tsx @@ -2,7 +2,7 @@ import { useState, useEffect } from 'react' import { motion } from 'framer-motion' -import Navbar from '@/components/Navbar/Navbar' + import Footer from '@/components/Footer/Footer' import Link from 'next/link' import Image from 'next/image' @@ -112,7 +112,7 @@ export default function CateringContent() { return (
- + {/* Page Hero */}
@@ -135,9 +135,9 @@ export default function CateringContent() { >
- + Catering Event Decorative Dinner Icon ANTALYA - + Catering Event Decorative Cutlery Icon

Exceptional Turkish Catering for Every Occasion

@@ -267,9 +267,9 @@ export default function CateringContent() { {/* Right Side: Content */}

- + Catering Visualization Decorative Dinner Icon ANTALYA - + Catering Visualization Decorative Cutlery Icon

A Visual Journey Through Antalya Catering

{/*
@@ -299,9 +299,9 @@ export default function CateringContent() {
- + Culinary Experience Decorative Dinner Icon ANTALYA - + Culinary Experience Decorative Cutlery Icon

A Culinary Experience Crafted for Your Event

@@ -356,9 +356,9 @@ export default function CateringContent() { >
- + Success Story Decorative Dinner Icon ANTALYA - + Success Story Decorative Cutlery Icon
@@ -422,9 +422,9 @@ export default function CateringContent() { {/* Right Side: Content */}
- + About Catering Decorative Dinner Icon ANTALYA - + About Catering Decorative Cutlery Icon

Antalya - One of Ontario’s Finest Catering Experiences diff --git a/src/components/Blogs/Blogs.tsx b/src/components/Blogs/Blogs.tsx index a54c2ad..fb01553 100644 --- a/src/components/Blogs/Blogs.tsx +++ b/src/components/Blogs/Blogs.tsx @@ -41,9 +41,9 @@ export default function Blogs() { return (
- + Home Blog Section Decorative Dinner Icon TASTE JOURNAL - + Home Blog Section Decorative Cutlery Icon

Our Blogs

diff --git a/src/components/BookTable/BookTable.tsx b/src/components/BookTable/BookTable.tsx index 980c14a..7b34af6 100644 --- a/src/components/BookTable/BookTable.tsx +++ b/src/components/BookTable/BookTable.tsx @@ -132,9 +132,9 @@ export default function BookTable() {
- + Home Reservation Decorative Dinner Icon ANTALYA - + Home Reservation Decorative Cutlery Icon

Book A Table

diff --git a/src/components/Gallery/Gallery.tsx b/src/components/Gallery/Gallery.tsx index 80e0a1a..bc6fcb6 100644 --- a/src/components/Gallery/Gallery.tsx +++ b/src/components/Gallery/Gallery.tsx @@ -40,9 +40,9 @@ export default function Gallery() { return (
- + Home Gallery Decorative Dinner Icon GALLERY - + Home Gallery Decorative Cutlery Icon

Flavour in Frames

diff --git a/src/components/Menu/Menu.tsx b/src/components/Menu/Menu.tsx index 2b33a63..ffeba03 100644 --- a/src/components/Menu/Menu.tsx +++ b/src/components/Menu/Menu.tsx @@ -41,9 +41,9 @@ export default function HomeMenu() { className={styles.smallHeading} style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', gap: '10px' }} > - + Home Menu Decorative Dinner Icon ANTALYA - + Home Menu Decorative Cutlery Icon

Explore Our Menu

diff --git a/src/components/Navbar/Navbar.tsx b/src/components/Navbar/Navbar.tsx index 8b3450e..55744e0 100644 --- a/src/components/Navbar/Navbar.tsx +++ b/src/components/Navbar/Navbar.tsx @@ -81,7 +81,7 @@ export default function Navbar() { Antalya Restaurant Header Logo - + Popular Dishes Decorative Dinner Icon ANTALYA - + Popular Dishes Decorative Cutlery Icon