web-dev-qa-db-fra.com

301 Redirect exception vs. Script nouvelle connexion à la base de données

Je vais aller droit au but car ce sera long.

J'ai construit un site WordPress pour un client sur un nouveau nom de domaine et 301 a redirigé ses 3 autres domaines pour le désigner. Ensuite, j'apprends qu'il a une base de données associée à son site à laquelle ses clients doivent accéder. Je n'avais pas remarqué cela, mais c'est là.

La connexion à la base de données s’est effectuée en accédant à "olddomainname.com/login". Le problème est que, maintenant que la redirection est en place, je ne peux pas y arriver. Les solutions du support GoDaddy étaient les suivantes:

  1. Exception de redirection .htaccess pour "olddomainname.com/login".
  2. Script une nouvelle connexion à la base de données (puisque la base de données n'est pas liée au domaine).

Je suis bien sûr au-dessus de ma tête ici! Je n'ai jamais travaillé avec des bases de données et bien que je puisse suivre les instructions, je crains de créer une nouvelle connexion par script car elle semble compliquée (plusieurs utilisateurs, etc.).

J'aimerais ajouter l'exception de redirection pour "olddomainname.com/login" car elle semble être l'option la plus simple. J'ai cherché beaucoup de réponses sur Google et j'ai essayé plusieurs choses, mais sans succès. En outre, l'exception devrait-elle inclure le répertoire dans lequel je suis passé après la connexion?

Je posterai le fichier .htaccess ci-dessous et j'espère que vous pourrez tous m'indiquer la bonne direction. C’est plutôt long, et j’ai également installé le plug-in Ultimate Coming Soon Page, donc je ne sais pas si cela gâche les quelques tentatives d’exception que j’ai faites, même si je peux voir le site très bien.

rewriteengine on
rewritecond %{HTTP_Host} ^www.olddomainname.info$ [OR]
rewritecond %{HTTP_Host} ^olddomainname.info$
rewriterule ^ "http\:\/\/newdomainname\.com\/" [R=301,L] #4f8bdeef8097b
rewritecond %{HTTP_Host} ^www.olddomainname.biz$ [OR]
rewritecond %{HTTP_Host} ^olddomainname.biz$
rewriterule ^ "http\:\/\/newdomainname\.com" [R=301,L] #4f8bded088493
rewritecond %{HTTP_Host} ^www.olddomainname.com$ [OR]
rewritecond %{HTTP_Host} ^olddomainname.com$
rewriterule ^ "http\:\/\/newdomainname\.com" [R=301,L] #4f8bde0b68ea5
rewritecond %{HTTP_Host} ^www.olddomainname.net$ [OR]
rewritecond %{HTTP_Host} ^olddomainname.net$
rewriterule ^ "http\:\/\newdomainname\.com" [R=301,L] #4f8bdea67d365

<IfModule mod_rewrite.c>
RewriteBase /
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Admin1
#Rename 'application' to your applications folder name.
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
</IfModule>

<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: Admin2
ErrorDocument 404 /index.php
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

rewritecond %{REQUEST_URI} ^system.*
rewriterule ^(.*)$ /index.php?/$1 [L]
rewritecond %{REQUEST_URI} ^application.*
rewriterule ^(.*)$ /index.php?/$1 [L]
rewritecond %{REQUEST_FILENAME} !-f
rewritecond %{REQUEST_FILENAME} !-d
rewriterule ^(.*)$ index.php?/$1 [L]
rewriterule ^index\.php$ - [L]
rewritecond %{REQUEST_FILENAME} !-f
rewritecond %{REQUEST_FILENAME} !-d
rewriterule . /index.php [L]

C'est tout. Désolé, il y a tant de choses, mais je voulais m'assurer que vous disposiez de toutes les informations au cas où quelque chose d'autre dans le fichier interférait. Il n'y a que les éléments gzip et je les ai laissés de côté. Toute aide est très appréciée, BEAUCOUP appréciée, car c’est pour un client et je me sens, eh bien, dans les décharges à propos de l’endroit où je me trouve.

* Mods: Je vois que mon post est assez long comparé à d'autres que j'ai vus. Si je suis trop allongé ou en quelque sorte avec ce premier post, faites-le moi savoir!

2
Steve OWD

Comment la base de données est-elle accessible aux clients?

Avez-vous essayé de configurer un sous-domaine pointant directement sur la base de données? Si le sous-domaine ne se trouve jamais près de la racine de votre document, il ne devrait pas être affecté par les commandes htaccess.

0
toomanyairmiles

Pour être honnête, on dirait que vous étiez au-dessus de votre tête même avant que des bases de données ne soient entrées dans l'image. Pour le client, cependant, voici un code qui devrait fonctionner (lorsqu'il est placé dans un fichier .htaccess dans le répertoire racine www du site):

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

# Do not apply any later rules to http://olddomainname.com/login:
RewriteCond %{HTTP_Host} ^(www\.)?olddomainname\.com$ [NC]
RewriteRule ^login(/.*)?$ - [L]

# This does the same as your existing rewrite rules, just simpler:
RewriteCond %{HTTP_Host} !^newdomainname\.com$ [NC]
RewriteRule ^ http://newdomainname.com/ [R=301,L,NS]

Ce que vous devriez vraiment faire, cependant, est de lire attentivement le documentation de mod_rewrite jusqu'à ce que vous compreniez exactement ce que fait ce code.

(Je devrais également noter que je n'ai pas encore testé ce code. Cela me semble bien, mais je sais que cela pourrait avoir une faute de frappe idiote ou quelque chose qui l'empêcherait de fonctionner.)

Ps. Sauf si l'interface de la base de données est réellement entièrement sous le répertoire /login, vous devrez probablement ajouter quelques exceptions supplémentaires. Le moyen le plus simple de le faire est d’éditer l’expression rationnelle dans le premier RewriteRule en quelque chose comme ^(login|database|whatever)(/.*)?$.)

0
Ilmari Karonen