2017-09-07 1 views
0

J'ai créé mon site Web avec quelques fichiers dans le dossier htdocs, tels que: .htaccess, web.php ... Dans le passé, j'ai utilisé une ancienne structure d'URL pour mon site Web: old.php?id=12. Puis, je l'ai utilisé une nouvelle: new/12, en utilisant ce .htaccess simple:Comment réécrire l'URL et renvoyer `404` pour les liens originaux?

RewriteEngine On 
RewriteRule "^new/([0-9]+)/?$" "/old.php?$1" 

Et maintenant, je ne veux pas tout utilisateur peut accéder à mon site Web à l'ancienne structure de l'URL. Pourriez-vous me montrer: Comment réécrire l'URL et retourner 404 pour les liens d'origine?

Répondre

1

Essayez ceci:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteRule ^new/(\d+)*$ ./old.php?id=$1 
+0

Bravo amigo! Heureux d'aider :-) – delboy1978uk

+1

Mais il ne va pas faire ce qui est demandé, pas de 404 et pas de blocage de l'ancienne URL – Croises

1

La meilleure solution, en particulier pour le référencement, est de faire une redirection 301:

RewriteEngine on 

# external redirect from actual URL to pretty one 
RewriteCond %{THE_REQUEST} \s/+old\.php\?id=(\d+) [NC] 
RewriteRule^/new/%1? [R=301,L,NE] 

# internal forward from pretty URL to actual one 
RewriteRule ^new/(\d+)/?$ /old.php?id=$1 [L,QSA,NC] 

Pour obtenir un vrai 404 sans effort, le plus simple de changer caché nom de la page à new.php (également dans htaccess) et supprimez la page old.php.