Url rewrite problema Facebook

Am preluat acest script de pe internet si l-am adaugat la mine pe site

define( 'INCLUDE_DIR', dirname( __FILE__ ) . '/inc/' );

$rules = array( 
    'login' => "/login",
    'activate' => "/activate/(?'code'[\w\-]+)",	
    'post' => "/post/(?'id'\d+)",
    'page'      => "/page/(?'page'about|contact)",          // '/page/about', '/page/contact'
    'home'      => "/"                                      // '/'
);

$uri = rtrim( dirname($_SERVER["SCRIPT_NAME"]), '/' );
$uri = '/' . trim( str_replace( $uri, '', $_SERVER['REQUEST_URI'] ), '/' );
$uri = urldecode( $uri );

foreach ( $rules as $action => $rule ) {
    if ( preg_match( '~^'.$rule.'$~i', $uri, $params ) ) {
        /* now you know the action and parameters so you can 
         * include appropriate template file ( or proceed in some other way )
         */
        include( INCLUDE_DIR . $action . '.php' );

        // exit to avoid the 404 message 
        exit();
    }
}

// nothing is found so handle the 404 error
include( INCLUDE_DIR . '404.php' );

Cand intru pe site/login imi citeste pagina login.php din folderul inc
Cand intru pe site/post/22 imi citeste post.php?id=22

Cand dau share la o pagina pe Facebook si cineva da click pe link primeste si ?fbclid=xxxx la finalul link-ului si ii va citi pagina 404.php

Cum as putea sa rezolv aceasta problema?

Cred ca poti folosi fisierul .htaccess ca sa scapi de acel fbclid.

si din php, la o prima vedere

Și dacă vine din google și are ?googleid=xxxx ? :smiley:

Problema e la regula asta:

'post' => "/post/(?'id'\d+)",

Regula cred că ar trebui să fie:

'post' => "/post/\?id=([\d]+)"

Nu functioneaza, imi citeste 404.php.

index.php imi citeste toate paginile
site.ro/inc/post.php?id=22 devine site.ro/post/22
Trebuie sa sterg cumva din uri “?” si ce scrie dupa