2009-10-13 4 views
0

Notre application utilise des règles de réécriture dans notre application PHP et notre développeur a ajouté ces règles de réécriture à notre fichier d'Apache:Apache règle de réécriture arrêtant des parties de notre application

J'ai mis à jour nos règles Réécrire basé sur la suggestion ci-dessous. !

Actuellement ma configuration de fichier VHosts ressemble à ceci:

blog RewriteCond% de -d RewriteRule ^/([a-zA-Z0-9 -,] +)//index.php?a de $? RewriteCond% blog! -d RewriteRule ^/([a-zA-Z0-9 -,] +)/([a-zA-Z0-9 -,] +) /? $/Index ! .php a = 1 & $ b = $ 2

blog RewriteCond% de -d RewriteRule ^/([a-zA-Z0-9 -,] +)/([a-zA-Z0-9-, ] +)/([a-zA-Z0-9 -,] +) /? $ /index.php?a=$1 & b = $ 2!c = $ 3

blog RewriteCond% de -d RewriteRule ^/([a-zA-Z0-9 -,] +)/([a-zA-Z0-9 -,] +)/([ a-zA-Z0-9 -, +)/([a-zA-Z0-9 -,] +) /? $ /index.php?a=$1 & b = $ 2 & c = $ 3 & d = $ 4 Je suis actuellement en mesure d'accéder à tous nos autres onglets d'application, tels que/goods, etc. Mais je n'arrive toujours pas à accéder à www.test.com/blog

Il me redirige toujours vers la page principale index.php de notre application. A partir des journaux de réécriture:

[13/Oct/2009: 17: 08: 41 --0400] [www.test.com/sid#8d03d8][rid#b902d8/initial] (1) transit/blog /wp-login.php [13/Oct/2009: 17: 08: 41 --0400] [www.test.com/sid#8d03d8][rid#b942f8/initial] (1) aller de l'avant avec// public_html/index.php [OK]

Merci

Répondre

2

Vous essayez beaucoup de choses dans vos règles de réécriture. Je vous conseille de ne pas.

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/(.*)$ /index.php?url=$0 [PT,L] 

Je vous conseille de réécrire la chaîne complète à la variable $_GET['url']. Vous pourriez exploser cette variable dans votre code. De cette façon, vous devez éditer votre vhost une seule fois.

Le RewriteCond compte toujours dans les deux sens (dans l'exemple ci-dessus et ci-dessous).

Ces conditions de réécriture vérifient si un fichier ou un répertoire existe. Dans le cas contraire, il appliquera la règle de réécriture

si les conditions ne fonctionnera pas essayer de placer la condition ci-dessus tous les RewriteRule comme ceci:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/([a-zA-Z0-9-,]+)/?$ /index.php?a=$1 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/?$ /index.php?a=$1&b=$2 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/?$ /index.php?a=$1&b=$2&c=$3 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/([a-zA-Z0-9-,]+)/?$ /index.php?a=$1&b=$2&c=$3&d=$4 
+0

Merci pour les commentaires Robert. Après avoir essayé vos recommandations, j'ai réalisé que ma description initiale de la question n'était pas exacte.Si vous avez le temps, veuillez consulter ma description mise à jour. Merci encore! – Steve

+0

Ma solution est-elle toujours valide, Steve? –

+0

Robert, j'ai essayé les commandes mises à jour ci-dessus avec le ReWriteCond spécifié au dessus de chaque règle mais j'ai toujours le même comportement. S'il vous plaît voir ma description mise à jour. Merci encore d'avoir pris le temps d'aider. – Steve

0

Essayez d'utiliser les conditions

RewriteCond %{REQUEST_URI} !^/blog$ [OR] 
RewriteCond %{REQUEST_URI} !^/blog/ 
RewriteRule ^/([a-zA-Z0-9-_,]+)/?$ /index.php?a=$1 

C'est question de jouer avec les conditions et les expressions régulières. Cela devrait empêcher de déclencher la réécriture lorsque l'URI commence par "/ blog /"

+0

Merci pour votre contribution Michal. J'ai modifié les règles de réécriture pour correspondre à votre exemple ci-dessus. Mais maintenant je vois un comportement étrange. Je peux aller sur mon site, www.dudeimgettingmarried.com et cliquer sur l'icône de la bulle pour arriver à www.dudeimgettingmarried.com/blog et ça se charge parfaitement. Mais si je tape directement cette URL dans mon navigateur, il sera redirigé vers une page qui a échoué. Des idées pourquoi? Je suis également en mesure d'accéder à ma page d'administration Wordpress via un signet, mais quand j'essaye l'URL vraie, il échoue à nouveau avec le problème de redirection: http://www.dudeimgettingmarried.com/blog/wp-admin/wp-login. Des idées? Merci – Steve

+0

Oui, j'ai changé le poste. Le problème était avec le slash final. Maintenant, cela devrait fonctionner même si vous tapez example.com/blog et example.com/blog/ –

Questions connexes