2009-10-27 8 views
1

J'essaye de concevoir un petit site où la plupart (95%) des ressources du site seront transmises par le biais d'un script PHP, et les 5% restants sont hébergés à partir d'un sous-domaine (images de fond, logos, etc. Ce que je voudrais, c'est que chaque fois qu'une page est appelée, disons www.example.com/blog/My_trip_to_the_andes la page qui serait appelée est htdocs/nexus.php et ce script pourrait découvrir quelle URI a été demandée. Lorsque les redirections se produisent, les en-têtes doivent être conservés, de sorte que le script reçoive des données POST ou COOKIERediriger tous les uri vers un script possiblement avec htaccess

Je crois que je peux accomplir ceci avec un .htaccess dans le répertoire racine du site. avoir peu ou pas d'expérience avec .htaccess et le documentation ne semble pas parler de cela.

Est-ce une bonne idée? Je veux que chaque requête de page passe par un script pour que je puisse me connecter, faire du suivi et des redirections, garder des requêtes inter-sites pour des ressources, et des choses auxquelles je ne peux même pas encore penser.

+0

Avez-vous déjà expérimenté avec mod_rewrite? – Homework

Répondre

1

.htaccess; -

<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /htdocs/nexus.php [L] 
</IfModule> 

Et le nom du fichier qui a été effectivement appelé devrait être disponible $_SERVER['REQUEST_URI']

+1

Mais $ _SERVER ['REQUEST_URI'] n'inclut pas la totalité de l'uri demandé. –

1

Depuis votre résident des ressources statiques sur un domaine différent, vous pouvez envoyer toutes les demandes à votre lien .php fichier avec cette règle mod_rewrite:

RewriteEngine on 
RewriteRule !^nexus\.php$ nexus.php [L] 

Le L'URL demandée à l'origine est alors disponible dans $_SERVER['REQUEST_URI'] (notez que ceci contient également la requête d'URL et pas seulement le chemin d'URL).

Mais si vous avez d'autres fichiers que vous souhaitez autoriser l'accès, vous pouvez les exclure cette condition additionnelle attachée à la règle précédente:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule !^nexus\.php$ nexus.php [L] 

Maintenant, seules les demandes qui ne peuvent pas être directement mis en correspondance sur existante les fichiers (!-f) sont réécrits en nexus.php.

Questions connexes