2011-03-31 27 views
10

Estoy programando la nueva versión de mi sitio web y estoy tratando de obtener .htaccess para reescribir correctamente. Mi nuevo sitio se almacena aquí:.htaccess RewriteRule no funciona en el subdirectorio

www.example.com/storage/new/ 

necesito volver a escribir estas URL:

www.example.com/storage/new/welcome/ -> index.php?action=welcome 
www.example.com/storage/new/page/name/ -> index.php?action=page&url=name 
www.example.com/storage/new/post/name/ -> index.php?action=post&url=name 

Este es mi archivo .htaccess:

RewriteEngine On 

RewriteRule ^/welcome/$ index.php?action=welcome [L] 
RewriteRule ^/page/([a-zA-Z0-9]+)/$ index.php?action=page&url=$1 [L] 
RewriteRule ^/post/([a-zA-Z0-9]+)/$ index.php?action=post&url=$1 [L] 

no funciona, sin embargo; todos los resultados en un 404 no encontrado. He intentado todo, incluso escribiendo www.example.com/storage/new/ en lugar de ^. Tengo otra .htaccess en la raíz del servidor (www.example.com) que tiene este aspecto:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] 
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 

No me puedo imaginar cómo eso afectaría www.example.com/storage/new/ pero nunca se sabe. Puede alguien ayudarme con esto?

Respuesta

10

tuve que enviar un correo electrónico del administrador de mi sistema para solicitar ayuda y resulta que .htaccess trata su propio camino como raíz; Simplemente eliminé el primer / antes del ^ en cada regla. Mi archivo .htaccess final se ve así:

RewriteEngine On 

RewriteRule ^welcome/$ index.php?action=welcome [L,QSA] 
RewriteRule ^page/(.*)/$ index.php?action=page&url=$1 [L,QSA] 
RewriteRule ^post/(.*)/$ index.php?action=post&url=$1 [L,QSA] 
2

El^significa el inicio de la cadena. RewriteRules analizará todo después de example.com/, por lo que debe incluir storage/new/en su patrón (o eliminar el ^).

También probablemente quiera agregar la bandera NC para que su patrón coincida sin distinción de mayúsculas y minúsculas (por ejemplo,/Page/o/page/ambos funcionarán). Lo que significa que puede cambiar el [a-zA-Z0-9] patrón para simplemente [A-Z0-9]

RewriteRule ^storage/new/welcome/$ index.php?action=welcome [L,NC] 
RewriteRule ^storage/new/page/([a-z0-9]+)/$ index.php?action=page&url=$1 [L,NC] 
RewriteRule ^storage/new/post/([a-z0-9]+)/$ index.php?action=post&url=$1 [L,NC] 
+0

Gracias por su respuesta, aunque todavía no funciona. He intentado todo lo que puedo pensar y leo más tutoriales de los que puedo contar. Qué podría estar mal? –

+0

bien, intente agregar una reescritura y asegúrese de terminar en la URL que está esperando: RewriteRule^storage/new/welcome/$ index.php? Action = welcome [L, NC, R = 301] – duncan

+0

Todavía nada. Definitivamente hay algo más que está mal. Archivaré un ticket de soporte. ¡Gracias por toda tu ayuda! –

Cuestiones relacionadas