web-dev-qa-db-fra.com

Comment rediriger des pages d'un ancien site PHP vers le nouveau site Joomla?

Nous avons notre ancien site dans le noyau PHP et nous l'avons développé à nouveau dans Joomla 1.5 l'année dernière (en raison de certaines limitations, nous devons le construire dans la version 1.5). Maintenant, le problème est que l'URL des sites a changé car nous avons utilisé les URL de référencement sur Joomla.

Dans l'intervalle, nous avons utilisé .htaccess pour rediriger l'utilisateur d'une ancienne URL vers une nouvelle comme celle-ci.

Redirect /pages/oldpage.php http://www.mydomain.com/products/category/new_page.html

Est-ce une bonne pratique de rediriger l'utilisateur vers une nouvelle URL ou non? (Nous avons utilisé le même serveur).

Une dernière chose, nous avons utilisé la page de garde sur notre site, et pour l’installer, nous avons apporté quelques modifications et, à cause de cela, l’un des liens importants ne fonctionne pas, c’est

http://www.mydomail.com/index.php

Comment puis-je m'en débarrasser? J'ai utilisé DirectoryIndex splash.html home.html index.php dans .htaccess pour ouvrir la page de démarrage en premier lorsqu'un utilisateur ouvre mon site www.mydomain.com.

Note: mon site web hébergé sur un serveur Ubuntu dédié.


EDIT: Comme mentionné, j'utilise Joomla et j'ai activé la fonction SEF, et il a déjà écrit .htaccess comme indiqué ci-dessous (car je ne le comprends pas beaucoup).

DirectoryIndex splash.html home.html index.php   
 RewriteEngine On

  ########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
## Deny access to extension xml files (uncomment out to activate)
#<Files ~ "\.xml$">
#Order allow,deny
#Deny from all
#Satisfy all
#</Files>
## End of deny access to extension xml files
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

Redirect /pages/oldpage.php http://www.mydomain.com/products/category/new_page.html
.....................
.................
5
pkachhia

Est-ce une bonne pratique de rediriger l'utilisateur vers une nouvelle URL ou non?

Oui, vous devrez le faire si vous souhaitez conserver le classement de votre moteur de recherche et empêcher tout ancien lien vers votre site de se rompre. Cependant, vous devez utiliser une redirection 301 (définitivement déplacée) ...

Redirect 301 /pages/oldpage.php ....

Si vous omettez le code d'état, une redirection 302 (temporaire) sera renvoyée et les moteurs de recherche risquent de ne pas mettre à jour leurs liens.


http://www.mydomail.com/index.php    # Returns 404 when accessed directly

(Remarque: Ce qui suit est un code générique pour rediriger de /index.php vers l'URL nue /, si /index.php ne fonctionne pas (il existe mais retourne un 404 quand on y accède directement), il y a peut-être quelque chose d'autre qui ne fonctionne pas qui doit être corrigé.)

Encore une fois, vous devez 301 rediriger de /index.php vers votre racine de domaine (vraisemblablement http://www.mydomain.com fonctionne correctement?!). Cependant, cela pourrait ne pas être aussi simple si vous avez DirectoryIndex index.php car vous pourriez créer une boucle de redirection, car mod_dir réécrira en interne / en /index.php. Cependant, cela peut être résolu avec mod_rewrite et en vérifiant spécifiquement THE_REQUEST et en ne redirigeant que lorsqu'il s'agit d'une demande du client (HTTP) et non d'une réécriture interne.

Options +FollowSymLinks
DirectoryIndex index.php

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.example.com/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

(En fait, vous devriez probablement rediriger de n'importe quel index de répertoire vers l'URL nue.)

1
MrWhite