Pregunta

Estoy desarrollando una aplicación localmente (bajo Nombre de dominio < mydomain > .dev ).

Para trabajar con URL amigables, configuré mi .htaccess de esta manera:

RewriteEngine on
# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://example.com/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

Funciona bien. Molesto, cuando se conecta, no es tan bueno:

http://example.com/issue/my-slug/#23 no devuelve ninguna variable GET. ¿Por qué?

¿Fue útil?

Solución

Supongo que, basado en la experiencia pasada, es RewriteBase, probablemente porque estás en un servidor compartido o alguna otra configuración no estándar.

RewriteEngine on

#Set base as doc root.
RewriteBase /

# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

Otros consejos

No veo eso

RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]

debe coincidir con esa URL, pero esa es la única con el indicador [R] para hacer una redirección externa. Intente comentar esa línea para asegurarse de que no haya otra parte de su aplicación que realice la redirección. Supongo que sí.

Faltan algunos espacios en blanco entre la URL de sustitución y las banderas. También puede simplificar su primera regla de la siguiente manera:

RewriteRule ^([a-z0-9._-]+/)*[a-z0-9_-]+$ %{REQUEST_URI}/ [NC,R=301,L]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top