2010-10-07 4 views
0

Comment détecter le dossier racine dans l'URI en utilisant apache mod_alias et mod_rewrite?Comment détecter le dossier racine dans l'URI en utilisant apache mod_alias et mod_rewrite?

J'ai un site Web fonctionnant sur un sous-dossier de la racine du document par exemple/var/www/ce/an/autre/dir dans ce dossier J'ai un fichier .ht_access avec des règles mod_rewrite pour tout rediriger vers index. php

# Do nothing if the file (s), link (l) or (d) exists 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 

# Redirect everything else to index.php 
RewriteRule ^.*$ index.php [E=PORT:%{SERVER_PORT},NC,L]` 

je aussi avoir mis en place un alias pour un accès facile

alias /foo /var/www/this/an/other/dir 

maintenant, quand je vais à l'adresse http://host.com/foo/bar/ comment puis-je détectons que/foo est le dossier racine de mon URI?

+0

essayer RewriteRule^(. *) $ Index.php uri = $ 1 [E = PORT:% {} SERVER_PORT, NC, L]? – ITroubs

+0

@ITroubs uri est déjà accessible via REQUEST_URI –

Répondre

2

plus simple est de définir une variable d'env directement à partir d'Apache:

SetEnv AliasRoot /foo 

Vous pouvez alors accéder à travers le $_ENV superglobale:

$root = $_ENV['AliasRoot']; 

Je ne pense pas qu'il existe un moyen fiable de faire cela en PHP pur.

+0

Cela a fonctionné, mais j'ai accédé par $ _SERVER. Merci! – vdrmrt

0

Je ne comprends pas très bien votre question.
dossier racine est toujours le même - /. Pas besoin de le déterminer.
Si vous avez besoin document_root virtuel - il suffit d'utiliser dirname($_SERVER["SCRIPT_FILENAME"])

+0

Ce que je veux savoir est quand je 'm dans/foo/bar que mon index.php est dans/foo – vdrmrt

+0

$ _SERVER ["SCRIPT_FILENAME"] renvoie le chemin du serveur et non de l'uri – vdrmrt

+0

@vdrmrt yes, 'dirname ($ _ SERVER [" SCRIPT_FILENAME "]) 'est votre racine de document virtuel. Alors j'ai dit. En ce qui concerne le foo - je ne sais pas pourquoi avez-vous besoin de cela, mais vous pouvez faire un peu de magie en comparant 'SCRIPT_FILENAME' avec' DOCUMENT_ROOT'. 'phpinfo (32)' peut vous donner quelques indices. –

Questions connexes