2010-11-03 17 views
0

Hé les gars, je cours un grand site Web où la structure d'URL pour les pages de contenu est: site.com/T8siBDNginx Rewrite Catch Tous ID possible de

Maintenant, le fichier qui capture actuellement toutes les pages d'identification possibles est index .php.

Je cours nginx, et j'ai ma page d'erreur 404 configurée comme index.php.

Donc tout va transmettre à index.php (si ce ne est pas là)

Et avec

$ex    = explode('/', $_SERVER["REQUEST_URI"]); 
$item_key  = isset($ex[1]) ? addslashes(htmlspecialchars($ex[1])) : '' 

Je peux bien aller chercher à l'ID de.

Cela fonctionne très bien dans le navigateur, mais si vous voulez wget l'une de mes pages de contenu, il vous donnera une erreur 404, car à la fin, Nginx pense que le «fichier» n'existe pas.

J'aimerais contourner cette page d'erreur 404.

Je pensais à utiliser quelque chose comme:

rewrite ^/(.*)? /index.php?q=$1 last; 

Mais quand je fais ça, il ne montre aucun des fichiers « existants » sur mon disque, et au fond avant même les images etc à l'index. php.

Est-ce que quelqu'un sait un bon moyen de réécrire cette règle?

Répondre

2

Ce sera bon s'il ...

vous publier vos config vous NGINX Vous pouvez essayer:

if(!-f $request_filename){ 
    rewrite ^/(.*)? /index.php?q=$1 last; 
} 

Ou, mieux:

try_files $uri /index.php?q=$uri 
+0

Merci! J'ai utilisé la première option. –