It's just my website bad or i screw something while changing the UI?

LondoN eXtream

Regular Member
Joined
May 14, 2020
Messages
294
Reaction score
194
As many of you know, i do have a movie website that generated milions of visitors and clicks.

I've wanted something new, fresh and more modern than the private script i was using. Also, i've wanted more 'clean' URLs.

So, i've developed, using AI, an entire PHP Custom MVC for my website designed for my needs. I've put everything to the point, from SEO, to page to internal linking and so on.

The problem is, i didn't get hit by G updates or so, but my traffic droppen even if the webpages are higher quality than before.

Would somebody be interested in taking a look at the old and new versions, and maybe guide me on what i have done wrong?

As a matter of fact, the main diffs:

- every single page has an AMP version
- multilang for every page with multiple languages
- better loading speed
- fresh content (auto updated) (condition: article older > 7 days > straight update in background, on visit of course so i won't have big resource usages or hit api limits)
- AI translated content on some languages -> translated the original plots/biography using openAI api.
- clear navs, footer and pages with content and more interaction things (like, "like buttons" for the articles).
- newsletter integration
- payment system (subscription) that actually people convert

The thing is real people converted on my website, many times, but despite the quality work i've done, from 9-10k clicks/day i barely do 1k/day now.
I would even mention that i get rid of a lot of errors from the GSC that have been bothering me.

The thing is if i query my website and filter by "indexed in last 24h/last week" i do not see any new pages coming on, but the crawl requests from google (source:cloudflare) hit around 100-150k/day.

Some stats in case somebody want to see:
1776885373863.png
1776885413343.png
1776885427982.png
1776885454780.png
Last 24h:
1776885553090.png
1776885570350.png
 
Last edited:
Put back the working one (I hope you have a backup). It's crystal clear the AI messed with something.
 
I don't want to ask the obvious question, but did your AI actually insert your analytics code back in to actually track your visitors?
 
I don't want to ask the obvious question, but did your AI actually insert your analytics code back in to actually track your visitors?
Yes, of course. I have even disabled the ads on the website, letting the main payment system alone.
Put back the working one (I hope you have a backup). It's crystal clear the AI messed with something.
I do have the database, but the old script won't work as i would like. Very heavy to convert from it. Not that "friendly" to be modified.
 
I would still double-check the analytics code. AI could have generated a different tracking ID to what you originally had without you realizing it. It may have only happened on some pages but not others too.
 
I would still double-check the analytics code. AI could have generated a different tracking ID to what you originally had without you realizing it. It may have only happened on some pages but not others too.
The tracking code is injected once, so it's a single place where i do have to edit the tracking ID. But it is sending data to GA4.
 
Sounds like indexing or url migration issues not design. If traffic dropped after the rebuild then google may not be passing old signals to the new structure. clean UI upgrades dont kill traffic, broken redirects and changed page relevance do.
 
maybe not even related to AI, look where your traffic is usually coming from, maybe the issue is there
 
Code:
# ----------------------------------------------------------------------
# | Security & PHP Access Control (Protects PHP files outside index.php)
# ----------------------------------------------------------------------
<FilesMatch "(?i)\.(php[0-9]?|phtml)$">
    Require all denied
</FilesMatch>
<FilesMatch "^(index|sitemap-generate)\.php$">
    Require all granted
</FilesMatch>

# ----------------------------------------------------------------------
# | Laravel Routing + Canonical Redirect + Movie URL Redirect
# ----------------------------------------------------------------------
<IfModule mod_rewrite.c>
    RewriteEngine On

    # --------------------------------------------------
    # Force HTTPS (works on any domain)
    # --------------------------------------------------
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]

    # --------------------------------------------------
    # Remove www prefix (canonical - works on any domain)
    # --------------------------------------------------
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^(.*)$ https://%1/$1 [L,R=301]

    # --------------------------------------------------
    # Redirect Trailing Slashes If Not A Folder
    # --------------------------------------------------
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # --------------------------------------------------
    # Allow sitemap XML and robots.txt to be served directly
    # --------------------------------------------------
    RewriteRule ^sitemap[^/]*\.xml$ - [L]
    RewriteRule ^robots\.txt$ - [L]
   
    RewriteRule ^titles/(.*)$ /movie/$1 [L,R=301]

    # --------------------------------------------------
    # Front Controller - all requests go to index.php
    # --------------------------------------------------
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>


# ----------------------------------------------------------------------
# |  Network & Connection Optimizations (TTFB, FCP)
# ----------------------------------------------------------------------
<IfModule mod_headers.c>
    # Essential Header for Service Workers
    <Files "ngsw-worker.js">
        Header Set Service-Worker-allowed "/"
    </Files>
   
    # HSTS: Forces HTTPS immediately on repeat visits (TTFB improvement)
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

    # Pre-connect to own domain (Simpler, non-variable syntax)
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Referrer-Policy "no-referrer-when-downgrade"
   
    # Keep-Alive: Tries to keep the TCP connection open
    <IfModule mod_env.c>
        SetEnv force-response-1.0
    </IfModule>
    Header set Connection Keep-Alive

    # CORS Headers for Web Fonts (Fixes FOUT/CLS issues)
    <FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2)$">
        Header set Access-Control-Allow-Origin "*"
    </FilesMatch>
</IfModule>

# ----------------------------------------------------------------------
# | Aggressive Caching (TTL) for Assets and HTML (LCP, CLS, TTFB)
# ----------------------------------------------------------------------
<IfModule mod_expires.c>
    ExpiresActive On

    # HTML Documents: Cache for 24 Hours (86400 seconds)
    ExpiresByType text/html "access plus 86400 seconds"

    # Default fallback value
    ExpiresDefault "access plus 0 seconds"

    # 1. Static Assets (CSS/JS): Cache for 1 Year (31536000 seconds)
    <FilesMatch "\.(css|js)$">
        Header set Cache-Control "max-age=31536000, public, immutable"
    </FilesMatch>

    # 2. Images (PNG, JPG, GIF, SVG, ICO): Cache for 1 Year
    <FilesMatch "\.(jpe?g|png|gif|svg|ico)$">
        Header set Cache-Control "max-age=31536000, public"
    </FilesMatch>

    # 3. Fonts: Cache for 1 Year
    <FilesMatch "\.(ttf|otf|woff2?|eot)$">
        Header set Cache-Control "max-age=31536000, public"
    </FilesMatch>
</IfModule>

# ----------------------------------------------------------------------
# | Brotli/Gzip Compression Strategy (Best Compression = Lower TTFB/FCP)
# ----------------------------------------------------------------------

# 1. Brotli Preference (Requires mod_rewrite and mod_headers)
<IfModule mod_rewrite.c>
    RewriteCond %{HTTP:Accept-Encoding} br
    RewriteCond %{REQUEST_FILENAME}\.br -f
    RewriteRule \.(css|js|html|xml|json|svg)$ %{REQUEST_URI}\.br [L]

    # Set the header for Brotli if served
    <FilesMatch "(\.br)$">
        Header set Content-Encoding "br"
        <FilesMatch "\.css\.br$">
            Header set Content-Type "text/css"
        </FilesMatch>
        <FilesMatch "\.js\.br$">
            Header set Content-Type "application/javascript"
        </FilesMatch>
    </FilesMatch>
</IfModule>

# 2. Gzip Fallback (Uses mod_deflate if Brotli is not used)
<IfModule mod_deflate.c>
    Header append Vary Accept-Encoding
   
    # Compress common file types
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/json
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/atom+xml
    AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
    AddOutputFilterByType DEFLATE font/ttf
    AddOutputFilterByType DEFLATE font/otf
    AddOutputFilterByType DEFLATE font/woff
    AddOutputFilterByType DEFLATE font/woff2

    # Exclude already compressed files
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|avi|mp4|mov|pdf|zip|gz|rar|7z)$ no-gzip
</IfModule>

htaccess file. The only redirected URL's are /titles/ to /movie as seen
The pages that i haven't keep i just 404 them. 301 for old articles.
The pages i 404 haven't driven traffic in the past so they we're useless
 
AI can kill everything if not used the right way. Unfortunately it's sad to hear that because AI actually is also very good for websites like that but it's all or nothing.

Don't put back the old one that was working, but if you can make some adjustments to the database and try to reduce AI in the workflow, it's going to be a first step.
 
Please check if the error is caused by your user interface (UI) code.

Check for errors on the website/admin server side.
No, i do not have any kind of errors server side. Everything is designed and coded to the brim. No errors, fast loading and everything. No empty pages. All have content and are up to the standards. Good internal linking and everything.
 
Back
Top