Como activar las URL Limpias / Clean URLs en Drupal
Pues bien, es algo que parece habitual en Drupal, y si bien en Internet se encuentran algunas supuestas soluciones, todas tocan el .htaccess, lo cual en mi caso no me sirvió para nada, por lo cual me puse a toquetear un poco el sistema, solo guiándome por una lógica básica, nada más., Aquí las instrucciones…:
1 – Ir a donde Drupal se encuentra instalado, y de allí a ( /modules/system )
2 – Una vez allí seleccionar ( system.admin.inc ), y copiarlo para hacer una copia de seguridad, luego una vez hecho esto, abrirlo…
3 – …buscar lo siguiente…:
[spoiler][code]
function system_clean_url_settings($form, &$form_state) {
$available = FALSE;
$conflict = FALSE;
// If the request URI is a clean URL, clean URLs must be available.
// Otherwise, run a test.
if (strpos(request_uri(), '?q=') === FALSE && strpos(request_uri(), '&q=') === FALSE) {
$available = TRUE;
}
else {
$request = drupal_http_request($GLOBALS['base_url'] . '/admin/config/search/clean-urls/check');
// If the request returns HTTP 200, clean URLs are available.
if (isset($request->code) && $request->code == 200) {
$available = TRUE;
// If the user started the clean URL test, provide explicit feedback.
if (isset($form_state['input']['clean_url_test_execute'])) {
drupal_set_message(t('The clean URL test passed.'));
}
}
else {
// If the test failed while clean URLs are enabled, make sure clean URLs
// can be disabled.
if (variable_get('clean_url', 0)) {
$conflict = TRUE;
// Warn the user of a conflicting situation, unless after processing
// a submitted form.
if (!isset($form_state['input']['op'])) {
drupal_set_message(t('Clean URLs are enabled, but the clean URL test failed. Uncheck the box below to disable clean URLs.'), 'warning');
}
}
// If the user started the clean URL test, provide explicit feedback.
elseif (isset($form_state['input']['clean_url_test_execute'])) {
drupal_set_message(t('The clean URL test failed.'), 'warning');
}
}
}
// Show the enable/disable form if clean URLs are available or if the user
// must be able to resolve a conflicting setting.
[/code][/spoiler]
…y dejarlo de esta forma…:
[spoiler][code]
function system_clean_url_settings($form, &$form_state) {
$available = TRUE;
$conflict = TRUE;
// Show the enable/disable form if clean URLs are available or if the user
// must be able to resolve a conflicting setting.
[/code][/spoiler]
Como verán, la mayor parte de ese texto se debe eliminar, y cambiar lo otro de FALSE a TRUE, de esta forma se eliminar el dichoso TEST que al menos en mi caso siempre falla, de modo que luego de todo esto, el “checkbox” aparecerá directamente en la opción dentro del mismo Drupal, por lo que solo queda activarla, y ya está, URL Limpias / Clean URLs.
4 – Como algo ultimo a realizar, solo les recomendaría dejar el archivo tal y como lo tiene Drupal originalmente., Luego de esto se verá dentro de las opciones de Drupal donde se activa, que aparece un cartel diciendo que se debe desactivar a causa que el Test no pasó (Clean URLs are enabled, but the clean URL test failed. Uncheck the box below to disable clean URLs. ), pero yo lo he dejado así, y no me ha presentado ningún tipo de problemas.
[hr]
…si alguien ha tenido este mismo error, comente para saber si este pequeño truco les funciona o no…
1 – Ir a donde Drupal se encuentra instalado, y de allí a ( /modules/system )
2 – Una vez allí seleccionar ( system.admin.inc ), y copiarlo para hacer una copia de seguridad, luego una vez hecho esto, abrirlo…
3 – …buscar lo siguiente…:
[spoiler][code]
function system_clean_url_settings($form, &$form_state) {
$available = FALSE;
$conflict = FALSE;
// If the request URI is a clean URL, clean URLs must be available.
// Otherwise, run a test.
if (strpos(request_uri(), '?q=') === FALSE && strpos(request_uri(), '&q=') === FALSE) {
$available = TRUE;
}
else {
$request = drupal_http_request($GLOBALS['base_url'] . '/admin/config/search/clean-urls/check');
// If the request returns HTTP 200, clean URLs are available.
if (isset($request->code) && $request->code == 200) {
$available = TRUE;
// If the user started the clean URL test, provide explicit feedback.
if (isset($form_state['input']['clean_url_test_execute'])) {
drupal_set_message(t('The clean URL test passed.'));
}
}
else {
// If the test failed while clean URLs are enabled, make sure clean URLs
// can be disabled.
if (variable_get('clean_url', 0)) {
$conflict = TRUE;
// Warn the user of a conflicting situation, unless after processing
// a submitted form.
if (!isset($form_state['input']['op'])) {
drupal_set_message(t('Clean URLs are enabled, but the clean URL test failed. Uncheck the box below to disable clean URLs.'), 'warning');
}
}
// If the user started the clean URL test, provide explicit feedback.
elseif (isset($form_state['input']['clean_url_test_execute'])) {
drupal_set_message(t('The clean URL test failed.'), 'warning');
}
}
}
// Show the enable/disable form if clean URLs are available or if the user
// must be able to resolve a conflicting setting.
[/code][/spoiler]
…y dejarlo de esta forma…:
[spoiler][code]
function system_clean_url_settings($form, &$form_state) {
$available = TRUE;
$conflict = TRUE;
// Show the enable/disable form if clean URLs are available or if the user
// must be able to resolve a conflicting setting.
[/code][/spoiler]
Como verán, la mayor parte de ese texto se debe eliminar, y cambiar lo otro de FALSE a TRUE, de esta forma se eliminar el dichoso TEST que al menos en mi caso siempre falla, de modo que luego de todo esto, el “checkbox” aparecerá directamente en la opción dentro del mismo Drupal, por lo que solo queda activarla, y ya está, URL Limpias / Clean URLs.
4 – Como algo ultimo a realizar, solo les recomendaría dejar el archivo tal y como lo tiene Drupal originalmente., Luego de esto se verá dentro de las opciones de Drupal donde se activa, que aparece un cartel diciendo que se debe desactivar a causa que el Test no pasó (Clean URLs are enabled, but the clean URL test failed. Uncheck the box below to disable clean URLs. ), pero yo lo he dejado así, y no me ha presentado ningún tipo de problemas.
[hr]
…si alguien ha tenido este mismo error, comente para saber si este pequeño truco les funciona o no…