Me gustaría que las siguientes URL redirijan a la misma URL solo que sin el ?
Por ejemplo:
https://www.example.com/this-is-static?numbersletterssymbolsva a
https://www.example.com/this-is-static"númerosletrassímbolos" puede ser cualquier cosa
Me gustaría que esto fuera un 301, usando htaccess (apache)
Me encontré con lo siguiente, sin embargo, la variable parece estar entre paréntesis
RewriteCond %{QUERY_STRING} ^product=(.*)$ RewriteRule ^test.php$ %1/? [R=301,L]Cualquier idea es apreciada
Para eliminar la cadena de consulta ( cualquier cadena de consulta) de cualquier URL, puede hacer lo siguiente usando mod_rewrite, cerca de la parte superior de su archivo .htaccess :
RewriteEngine On RewriteCond %{QUERY_STRING} . RewriteRule ^ %{REQUEST_URI} [QSD,R=301,L] La condición (directiva RewriteCond ) simplemente afirma que hay una cadena de consulta que consta de al menos 1 carácter (determinado por la expresión regular . un solo punto).
El indicador QSD (Query String Discard) elimina la cadena de consulta original de la respuesta redirigida. El indicador QSD requiere Apache 2.4 (que probablemente esté utilizando). El método utilizado en versiones anteriores de Apache, como en su ejemplo, es agregar un ? a la cadena de sustitución (esencialmente una cadena de consulta vacía ).
Tenga en cuenta que primero debe probar con una redirección 302 (temporal) para evitar posibles problemas de almacenamiento en caché.
sin embargo, la variable parece estar entre paréntesis
Los paréntesis en la expresión regular simplemente crean un "grupo de captura" al que se puede hacer referencia más adelante con una referencia inversa. p.ej. En su ejemplo, se hace referencia al valor del parámetro de URL del product en la cadena de sustitución RewriteRule mediante la referencia inversa %1 para redirigir al valor del parámetro de URL. Esto es muy diferente a lo que está tratando de hacer y podría decirse que es un problema de seguridad. p.ej. Redirigiría una solicitud de /test.php?product=https://malicious.com a https://malicious.com/ , lo que permitiría a un hacker potencial retransmitir el tráfico a través de su sitio.
ACTUALIZACIÓN: ¿es posible hacer que esto funcione solo cuando la URL comienza con "this-is-static" (por ejemplo)
Sí, el patrón RewriteRule (primer argumento) coincide con la ruta de URL, menos el prefijo de barra inclinada. Por ejemplo:
RewriteCond %{QUERY_STRING} . RewriteRule ^this-is-static %{REQUEST_URI} [QSD,R=301,L] Coincide con todas las URL que comienzan con /this-is-static .