2010-01-17 4 views
1

J'essaie de créer une règle de réécriture dans un répertoire différent, mais malheureusement, cela ne fonctionne pas.mod_rewrite dans un répertoire

Ma réécriture actuelle renvoie tout le contenu du fichier index.php sauf si le premier mot de la chaîne de requête est admin. La règle de réécriture pour 'admin' est à admin.php, mais je veux en fait aller à /var/www/html/website.com/admin/admin.php (au lieu du fichier dans le même répertoire).

Ceci est le fichier .htaccess actuel.

RewriteEngine On 
RewriteRule ^(.*\/?).*(css|images|js/)+.*$ - [L] 
RewriteRule ^\/?admin\/?(.*)$ admin.php?url=$1 [QSA,L] 

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

Si je change la règle de réécriture pour administration d'utiliser un autre répertoire ..

RewriteRule ^\/?admin\/?(.*)$ /var/www/html/website.com/admin/admin.php?url=$1 [QSA,L] 

Il brise le site. Des idées?

Merci.

Répondre

0

C'est en fait assez simple, vous utilisez le chemin du système, alors que le chemin Web est nécessaire.

Essayez la ligne suivante:

RewriteRule ^\/?admin\/?(.*)$ /subfolder/admin.php?url=$1 [QSA,L] 
+0

mon répertoire est assis en dessous de la trajectoire de la bande. Le chemin Web est /var/www/html/website.com/web/ et le chemin im essayant d'y accéder est /var/www/html/website.com/admin/web/ – Bennn

+0

Eh bien, vous ne pouvez pas. La seule façon de le faire est de créer un autre fichier, accessible via le Web, et d'inclure votre fichier non accessible. Comme ceci: [? Php require_once ('../admin/web/admin.php') –

+0

Merci pour l'aide. Je viens de faire un lien symbolique vers le répertoire et ajouté un mod_rewrite là et cela a fonctionné. – Bennn

0

Essayez ces règles:

RewriteRule ^admin($|/(.*)) admin/admin.php?url=$2 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php?url=$0 [QSA,L] 
Questions connexes