testear test probar online htaccess debugger apache .htaccess mod-rewrite url-rewriting

apache - probar - test rewrite htaccess



htaccess y reescritura (2)

Me imagino que algo como esto funcionaría (no probado):

Options FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} !^website/.com RewriteCond %{HTTP_HOST} ^([^.]+) RewriteRule /?cat_id=([0-9]+)&photo_id=([0-9]+) http://website.com/$1/$2/ RewriteRule ^/(.*)/(.*)/ /%1.php?cat_id=$1&photo_id=$2 [P]

Nota: de acuerdo con la documentación , Options FollowSymLinks debe ser una opción que puede anular para que funcione la reescritura.

El primer RewriteCond se asegurará de que el host "webiste.com" no se reescriba (pero los dominios como sub.website.com lo harán). El segundo coincide con cualquier cosa hasta el primer punto del nombre de host. Ambos deben tener éxito y, de ser así, la parte del host está accesible en% 1.

El primer RewriteRule reescribe los argumentos al script php en las rutas del directorio (un cambio visto en el URL en el navegador). El siguiente RewriteRule utiliza el indicador [P] para proxy de cualquier solicitud de la forma / xx / yy / a% 1.php (nuestro nombre de host recordado) con los argumentos pasados ​​al script php.

Como dije, esto no se ha probado, pero con suerte lo llevará "en la dirección correcta".

EDITAR: eliminó la [R] de la primera regla de reescritura.

Acabo de crear un subdominio en mi sitio web principalmente porque quiero una dirección específica para él.

Digamos que mi sitio web es: http://website.com Y mi subdominio es http://sub.website.com con su carpeta principal en /home/username/public_html/sub/

Cuando ingreso la dirección del subdominio, la dirección cambia súbitamente a http//website.com/sub/

¿Cómo puedo mantener la dirección del subdominio?

EDIT para Dennis:

tengo una regla que dirige todo http://www.website.com a http://website.com

yo suelo

RewriteEngine on Redirect to non-www RewriteCond %{HTTP_HOST} !^(website/.com)?$ RewriteRule (.*) http://website.com/$1 [R=301,L]

incluso si comento esto, la dirección cambia a

http://website.com/sub/

Lo mejor de todo, Alexander


Otra solución es tener un Virtualhost dedicado para su subdominio (que ya debería ser el caso, si no, obtendrá muchos problemas) y hacer que este VirtualHost ignore las instrucciones .htaccess del dominio maestro. Deberías tratar de mantener la configuración de tu subdominio independientemente de la configuración de dominio del dominio maestro.

Digamos que su documentRoot en el subdominio VH es /home/username/public_html/sub/ , cuando Apache sirve el archivo index.php o index.html o cualquier otra cosa en este directorio, realiza una búsqueda recursiva de todo .htaccess en /home/username/public_html/sub/ , /home/username/public_html/ , /home/username/ , /home/ y / . Entonces se aplican las reglas definidas en su dominio maestro (creo que está en /home/username/public_html/ ).

Puede decirle a este subdominio VirtualHost que ignore todos los archivos .htaccess que se encuentran antes de VH DocumentRoot agregando:

<Directory /> AllowOverride None </Directory> <Directory /home/username/public_html/sub/> AllowOverride All </Directory>

Incluso podría eliminar AllowOverride All , eliminar todo .htaccess y colocar las cosas que tiene en .htaccess de su subdominio (si tiene una) directamente en la sección <Directory /home/username/public_html/sub/> , mismo efecto sin tener a Apache buscando partes de configuración en el sistema de archivos (más rápido).