El reto viene con tener para detectar y dar cuenta de cuatro diferentes posibles patrones de dominio:
- example.com → example.nl
- example.co.uk → example.nl
- sub.example.com → sub.example.nl
- sub.example.co.uk → sub.example.nl
Por lo tanto, lo que este conjunto de reglas hace es comprueba que el dominio de nivel superior no lo es. nl (evitando que ocurra un bucle), luego saca el subdominio, www o no, del frente (se lee como "captura cualquier cosa que no sea un punto seguido de un punto, opcional), seguido por el dominio base, seguido de un punto. No tenemos que coincidir con la URL completa, ya que no mantenemos el TLD.
RewriteEngine On
RewriteCond %{HTTP_HOST} !example\.nl$
RewriteCond %{HTTP_HOST} ^([^.]+\.)?example\.
RewriteRule^http://%1example.nl%{REQUEST_URI} [NC,L,R=301]
de la RewriteRule^coincide con cualquier URL, a continuación, inserta los contenidos del primer conjunto de parens en la RewriteCond precedente (el subdominio) con% 1, y completa la reescritura añadiendo la ruta y banderas solicitado ignorar caso , haga de esto la última regla y redireccione con un 301 amigable con los motores de búsqueda, asegurándose de que la URL reescrita aparezca en el navegador del usuario. Cualquier cadena de consulta (texto que aparece después de a? En la URL) se incluye automáticamente de forma predeterminada.
¡Casi! tenía un ciclo infinito porque no detuvo la reescritura si el TLD era correcto. agregado RewriteCond% {HTTP_HOST}!^([^.] + \.)? example \.nl - Ahora se detiene si el TLD es correcto. Además, sorprendente primera respuesta! bienvenido a SO – Tjirp
Realmente no es mi primera respuesta en este sitio, solo el primero en ser reconocido. – Eric3