2010-08-28 3 views
1

J'ai un fichier ajax qui est appelé quand quelqu'un commence à taper dans la barre de recherche. J'ai récemment nettoyé mes adresses et enlevé des extensions de dossier en ajoutant des barres obliques, puisque mon dossier d'ajax ne semble pas charger plus. quelqu'un peut-il aider? ici mon htaccess jusqu'à présentfichier ajax ne se charge pas en raison de slash

Options +FollowSymlinks 
Options +Indexes 
RewriteEngine on 


RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^([^/]+)/$ $1.php 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,L] 

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^([^.]+)\.php$ /$1 [R=301,L] 
+0

je crois appliquent uniquement à la règle de RewriteCond directement en dessous d'eux, donc si votre demande AJAX est faite à un chemin deux répertoires en profondeur, et un répertoire existe cela pourrait l'expliquer. À quelle adresse faites-vous la requête AJAX et quelle est l'URL réelle à laquelle elle devrait accéder? –

+0

les demandes ajax /include/get-content.php et c'est l'URL du fichier: www.lovelakedistrict.com/include/get-content.php est ce que vous vouliez dire? – AJFMEDIA

+0

@ajfmedia - Cela fonctionne-t-il si vous supprimez cette dernière condition et la règle? Il est possible que la redirection 301 mette la requête en erreur, donc si c'est le problème, il ne devrait pas être trop difficile d'ignorer cette règle juste pour les fichiers auxquels vous accédez avec des requêtes AJAX. (mais je ne voulais pas poster une réponse à ce sujet sans savoir que c'était le vrai problème) –

Répondre

2

En supposant que vos requêtes AJAX vont dans le dossier /includes, et vos pages normales ne sont pas, nous pouvons modifier vos règles un peu afin qu'ils ressemblent à ceci (y compris Cags' commentaire sur le RewriteCond):

Options +FollowSymlinks 
Options +Indexes 

RewriteEngine on 

# We'll do the redirect first, so no other rules get in the way 
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^.#?\ ]+)\.php([#?][^\ ]*)?\ HTTP/ 
# Make sure the request didn't start with "includes" 
RewriteCond %1 !^includes/ 
RewriteRule ^([^.]+)\.php$ /$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ $1.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,L] 

Je pense aussi que soit vous vouliez /? à la fin des règles dans le bloc central, ou /$1/ que le remplacement de la règle dans le premier bloc, de sorte que la redirection /page.php-/page obtient interprété correctement après la première redirection (je pense que maintenant vous serez redirigé deux fois, une fois par le premier bloc, et encore par le dernier bloc).

+0

grand merci beaucoup. Fonctionne parfaitement. Si vous recherchez quelque chose maintenant, vous obtenez des résultats de recherche filtrés :) http://www.lovelakedistrict.com – AJFMEDIA