2012-01-09 19 views
6

No puedo entender cómo redireccionar al directorio padre en este caso: Tengo un directorio raíz con el archivo .htaccess, donde rewriteEngine está activado. En este directorio tengo un archivo rootFile.php. Además, en este directorio tengo un directorio "foro", con otro archivo .htaccess en él.htaccess RewriteRule redirigir al directorio principal?

Cuando hay una solicitud para "forum.mySite.com/rootFile.php", necesito redireccionarla a "mySite.com/rootFile.php", lo que significa que necesito redirigir la solicitud al directorio padre.

/forum/.htaccess:

RewriteEngine on 

RewriteBase /forum/ 

RewriteRule ^sitemap     /forum/map.php    [L] 
... 

Me trataron de:

RewriteEngine on 

RewriteBase /forum/ 

RewriteRule ^rootFileName     ../rootFile.php   [L] 
\# or so RewriteRule ^rootFileName   /rootFile.php    [L] 
\# or so RewriteRule ^rootFileName   rootFile.php    [L] 

RewriteRule ^sitemap     /forum/map.php    [L] 

también trató éste:

RewriteEngine on 

RewriteBase/

RewriteRule ^rootFileName     ../rootFile.php   [L] 
\# or so RewriteRule ^rootFileName   /rootFile.php    [L] 
\# or so RewriteRule ^rootFileName   rootFile.php    [L] 

RewriteBase /forum/ 

RewriteRule ^sitemap     /forum/map.php    [L] 

Y siempre redirección desde/foro/a rootFileName/forum/rootFile, pero nunca a/rootFile.

¿Dónde está mi error?

Respuesta

0

Usted escribió:

Cuando hay petición de "forum.mySite.com/rootFile.php", necesito redirigirlo a "mySite.com/rootFile.php" lo que significa que necesito a redirigir la solicitud al directorio padre.

¿Se refiere a:

Cuando hay solicitud para "mySite.com/forum/rootFile.php", necesito redirigirlo a "mySite.com/rootFile.php" lo que significa que necesito solicitud de redirección al directorio padre.

... Lo cual a su vez significa:

Cuando hay solicitud para "/forum/rootFile.php", necesito redirigirlo a "/rootFile.php" lo que significa que necesito solicitud de redirección al directorio padre.

En su .htaccess en el directorio /forum probar esto:

RewriteEngine On 
RewriteRule ^rootFileName(.*) /rootFile.php [QSA,R=301,L] 
7

No se puede volver a escribir a las afueras de la raíz_documentos. Esto es algo de seguridad.

Se podía crear un rootFile.php que sólo contiene <?php include('../rootfile.php'); ?>

3

No se puede reescribir de caminos que se encuentran fuera de la raíz del documento por razones de seguridad. De hecho, esto debe evitarse porque no es una buena práctica.

De todos modos, para responder a su pregunta, una solución podría ser crear un enlace simbólico en la raíz del documento que apunte al directorio de destino/principal, pero debe protegerlo de los accesos directos.

Déjeme hacer un ejemplo. Supongamos que nuestra raíz del documento es /var/www/project1 y que desea volver a escribir en /var/www/project2/target.php

Entonces, usted tiene que crear un enlace simbólico en el interior /var/www/project1 que apunta a /var/www/project2 llamado (por ejemplo) p2.

Esta debe ser su archivo /var/www/project1/.htaccess:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteCond %{REQUEST_URI} /hello/world 
    RewriteRule ^(.*)$ p2/target.php [QSA,L] # p2 is the symlink name! 
</IfModule> 
+0

¿de dónde viene el camino '/ hola/world' necesita apuntar a? – MrIsaacs

Cuestiones relacionadas