La prueba de URL limpia falló en D 7

8

Estoy cansado de encontrar una solución para este problema.

He intentado casi todo. Pero no me funciona. Lo que he probado se da a continuación:

  1. Descomentar RewriteBase /

  2. Cambiar la sintaxis de REWRITE URL

  3. Sin extensión .txt en el archivo .htaccess (EDITADO)

  4. mod_rewrite habilitado.

  5. Eliminar directamente la cadena de consulta y dar enter tampoco funciona.

  6. Si incluyo ALLOWOVERRIDES ALL en el archivo httpd.conf, muestra un error de autenticación requerida.

  7. Intenté deshabilitar el módulo de superposición: no funciona.

Aquí está el archivo .htaccess para su referencia.

#
# Apache/PHP/Drupal settings:
#

# Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$">
  Order allow,deny
</FilesMatch>

# Don't show directory listings for URLs which map to a directory.
Options -Indexes

# Follow symbolic links in this directory.
Options +FollowSymLinks

# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php index.html index.htm

# Override PHP settings that cannot be changed at runtime. See
# sites/default/default.settings.php and drupal_environment_initialize() in
# includes/bootstrap.inc for settings that can be changed at runtime.

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
  php_flag magic_quotes_gpc                 off
  php_flag magic_quotes_sybase              off
  php_flag register_globals                 off
  php_flag session.auto_start               off
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_flag mbstring.encoding_translation    off
</IfModule>

# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
  # Enable expirations.
  ExpiresActive On

  # Cache all files for 2 weeks after access (A).
  ExpiresDefault A1209600

  <FilesMatch \.php$>
    # Do not allow PHP scripts to be cached unless they explicitly send cache
    # headers themselves. Otherwise all scripts would have to overwrite the
    # headers set by mod_expires if they want another caching behavior. This may
    # fail if an error occurs early in the bootstrap process, and it may cause
    # problems if a non-Drupal PHP file is installed in a subdirectory.
    ExpiresActive Off
  </FilesMatch>
</IfModule>

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on

  # Block access to "hidden" directories whose names begin with a period. This
  # includes directories used by version control systems such as Subversion or
  # Git to store control files. Files whose names begin with a period, as well
  # as the control files used by CVS, are protected by the FilesMatch directive
  # above.
  #
  # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is
  # not possible to block access to entire directories from .htaccess, because
  # <DirectoryMatch> is not allowed here.
  #
  # If you do not have mod_rewrite installed, you should remove these
  # directories from your webroot or otherwise protect them from being
  # downloaded.
  RewriteRule "(^|/)\." - [F]

  # If your site can be accessed both with and without the 'www.' prefix, you
  # can use one of the following settings to redirect users to your preferred
  # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
  #
  # To redirect all users to access the site WITH the 'www.' prefix,
  # (http://example.com/... will be redirected to http://www.example.com/...)
  # uncomment the following:
  # RewriteCond %{HTTP_HOST} !^www\. [NC]
  # RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  #
  # To redirect all users to access the site WITHOUT the 'www.' prefix,
  # (http://www.example.com/... will be redirected to http://example.com/...)
  # uncomment the following:
  # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  # RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]
  # RewriteCond %{HTTP_HOST} !^mysite\.com$ [NC]
  # RewriteRule ^(.*)$ http://mysite.com/$1 [L,R=301]

  # Modify the RewriteBase if you are using Drupal in a subdirectory or in a
  # VirtualDocumentRoot and the rewrite rules are not working properly.
  # For example if your site is at http://example.com/drupal uncomment and
  # modify the following line:
  # RewriteBase /drupal
  #
  # If your site is running in a VirtualDocumentRoot at http://example.com/,
  # uncomment the following line:
   RewriteBase /

  # Pass all requests not referring directly to files in the filesystem to
  # index.php. Clean URLs are handled in drupal_environment_initialize().
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  # RewriteRule ^ index.php [L]
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

  # Rules to correctly serve gzip compressed CSS and JS files.
  # Requires both mod_rewrite and mod_headers to be enabled.
  <IfModule mod_headers.c>
    # Serve gzip compressed CSS files if they exist and the client accepts gzip.
    RewriteCond %{HTTP:Accept-encoding} gzip
    RewriteCond %{REQUEST_FILENAME}\.gz -s
    RewriteRule ^(.*)\.css $1\.css\.gz [QSA]

    # Serve gzip compressed JS files if they exist and the client accepts gzip.
    RewriteCond %{HTTP:Accept-encoding} gzip
    RewriteCond %{REQUEST_FILENAME}\.gz -s
    RewriteRule ^(.*)\.js $1\.js\.gz [QSA]

    # Serve correct content types, and prevent mod_deflate double gzip.
    RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
    RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]

    <FilesMatch "(\.js\.gz|\.css\.gz)$">
      # Serve correct encoding type.
      Header set Content-Encoding gzip
      # Force proxies to cache gzipped & non-gzipped css/js files separately.
      Header append Vary Accept-Encoding
    </FilesMatch>
  </IfModule>
</IfModule>

Cualquier ayuda será muy apreciada....

Fero
fuente
¿Qué mensaje de error tienes? ¿Se ha activado correctamente la URL limpia en la administración de drupal?
Mika A.
La activación está en Administrar> Configuración> Búsqueda y metadatos
Mika A.
No consigo el botón de habilitar allí. Acabo de ejecutar el botón de prueba de URL limpia ..
Fero
1
Asegúrese de que su archivo .htaccess no tenga una extensión .txt.
Justin
@@ Justion: eso es lo que olvido agregar en la pregunta ... la primera comprobación es que solo ...
Fero

Respuestas:

6

Una buena forma de depurar es ver primero si .htaccessApache lo está recogiendo. Supongo que no lo es, ya que Drupal .htaccessdebería hacer que las URL limpias funcionen de fábrica con las reglas que se envían, suponiendo que el mod_rewritemódulo esté habilitado.

Sin embargo, para confirmar esto, cometa un error flagrante en el .htaccessarchivo y vaya a su página de inicio de Drupal, si la publicación de la solicitud falló (HTTP 500), significa que está listo y el problema está en otro lado.

De lo contrario, verifique si el directorio desde el cual se está sirviendo su sitio (es decir, el suyo DocumentRoot) o uno de sus padres ha AllowOverride Allestablecido. Básicamente, aquí es donde le informa al servidor web que debe respetar las .htaccessanulaciones de los directorios desde los que sirve.

Esto puede sonar obvio, pero si está ejecutando un servidor web diferente (por ejemplo, nginx o IIS), debe saber que puede tener que configurarlo de manera diferente para que las URL limpias funcionen.

Amarnath Ravikumar
fuente
+1 por aconsejar que compruebe que el archivo .htaccess se está recuperando o no ... Wil verifica y vuelve lo antes posible ... Gracias ...
Fero
1

La razón es porque no ha descomentado la línea mod_rewrite dentro de su httpd.conf. Este es el error de configuración más común en apache. Navegue a su archivo httpd.conf (es un archivo apache) y realice una búsqueda (ctrl + f) de mod_rewrite. solo debe haber una instancia. eliminar el # desde el principio y guardar. Reinicie apache y la casilla de verificación debería estar allí.

Soluciones CreekNET
fuente
0

La mejor manera es verificar si .htaccess está disponible en la carpeta raíz o no normalmente cuando lo instala va en la carpeta drupal, así que mueva todos los archivos a la raíz al ver los archivos ocultos.

Dr. Nongmaithem Ajith Singh
fuente