.problemas con htaccess: No se ha especificado ningún archivo de entrada


¿Puede alguien ayudarme con esto? Me siento como si me hubiera estado golpeando la cabeza contra una pared por más de 2 horas.

Tengo Apache 2.2.8 + PHP 5.2.6 instalado en mi máquina y el .htaccess con el código a continuación funciona bien, sin errores.

RewriteEngine on
RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]

El mismo código en el servidor de mi proveedor de alojamiento me da un código de error 404 y genera un índice only: No input file specified..php está ahí. Sé que tienen Apache instalado (no puede encontrar información de la versión en ningún lugar) y están ejecutando PHP v5.2.8.

Estoy en Windows XP 64-bit, son ejecutando algunos Linux con PHP en modo CGI/FastCGI. ¿Puede alguien sugerir cuál podría ser el problema?

PS. si eso es importante, es que CodeIgniter funcione con URL amigables.


Actualización 1:

mod_rewrite está instalado y encendido.

Lo que he notado es que si cambio en RewriteRule a /index.php?$1 (signo de interrogación en lugar de barra diagonal) entra en un bucle infinito. De todos modos, usar signo de interrogación no es una opción ya que CodeIgniter (requerido) no va a funcionar esto manera.

La página de inicio también funciona cuando solicito index.php directamente: example.com/index.php

Estoy empezando a pensar que podría ser Apache pensando que una vez que se agrega la barra diagonal final ya no es un archivo sino una carpeta. ¿cómo cambiar tal comportamiento?


Actualización 2:

, estaba equivocado.
Apache maneja estas URL correctamente.
Solicitar http://example.com/index.php/start/ (página de inicio) o cualquier otra dirección válida funciona.
Parece que Apache simplemente no está reenviando la consulta para algunos motivo.


Actualización 3:

Solo para que quede claro lo que estoy tratando de lograr.
Quiero reescribir direcciones así:

Http://www.example.com/something/ => http://www.example.com/index.php/something/ http://www.example.com/something/else/ => http://www.example.com/index.php/something/else/

Author: Prabhu, 2009-10-13

12 answers

Yo estaba golpeando mi cabeza contra esto. También estoy instalando el Encendedor de código.

El goocher no fue reescrito. Aquí está mi .htaccess:

DirectoryIndex index.php

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|robots\.txt)

RewriteRule ^(.*)$ index.php?/$1 [L]
 83
Author: jray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-14 21:05:45

El Problema

Me encontré con un problema similar en este momento y desafortunadamente ninguna de las respuestas en este hilo ayudó:

Zend Framework estaba dando "Ningún archivo de entrada especificado."pero:

  • La reescritura predeterminada estaba bien, y agregar RewriteBase / no ayudó
  • Es un servidor de alojamiento compartido y solo FastCGI está disponible (sin posibilidad de cambiar a SuPHP)
  • AcceptPathInfo estaba en
  • No hubo ningún problema con la reescritura de URL en general en el servidor

Así que la respuesta vino del siguiente sitio: https://ellislab.com/forums/viewthread/55620/P15 [enlace muerto] (aunque el anfitrión no es DreamHost).

La Solución

Aparentemente todo lo que necesitas hacer es reemplazar esta línea:

RewriteRule ^(.*)$ index.php/$1

Con esto:

RewriteRule ^(.*)$ index.php?/$1

Problema resuelto.

 26
Author: Ynhockey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-06 06:58:03

Esto funcionó para mí:

 <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
 </IfModule>

Después de index.php, ¡el signo de interrogación es importante!

 9
Author: A.G.THAMAYS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-26 12:22:17

Pruebe si funciona con un RewriteCond más simple; como uno que reescribe solo todo lo que no es un archivo/carpeta/enlace existente:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ /index.php/$1 [R,L]
 4
Author: kkyy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-13 08:10:56

Usuarios de Go Daddy:

  1. inicie sesión en su cuenta de Go Daddy
  2. haga clic en su cuenta de hosting.
  3. vaya a Configuración > Administración de Extensiones de archivo
  4. cambiar .php and .php5 para ejecutar bajo PHP5.2X (en lugar de PHP5. 2xFastCGI)

RESUELTO!!!!

 4
Author: lesocute,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-06 01:33:31

mod_rewrite es un poco demasiado inteligente para su propio bien, porque trata de averiguar qué tipo de redirección debería estar haciendo. En este caso, parece que mod_rewrite está tratando de redirigir a una carpeta, por lo que busca la carpeta y no puede encontrarla, de ahí el error.

Edit: Solo para ser perfectamente claro creo que tu mejor apuesta es cambiar tu regla de reescritura a:

RewriteRule ^(.*)$ /index.php?$1 [L]

A menos que haya una razón muy específica por la que quieras que sea una barra diagonal.

Editar 2: I mira que ya has probado esto. La razón por la que obtienes un bucle infinito es porque tienes índice.php en su condición de reescritura. Si se quita que usted debe estar libre del bucle infinito.

 3
Author: Jay Paroline,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-13 06:03:55

.htaccess para Servidor en vivo: -

DirectoryIndex index.php

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|robots\.txt)

RewriteRule ^(.*)$ index.php?/$1 [L]

.htaccess para Localhost: -

RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1
 1
Author: Parimal Nakrani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-27 18:03:50

Es muy probable que el administrador de su host haya deshabilitado la capacidad de usar Reescritura en .htaccess. Es posible que ni siquiera tengan instalado mod_rewrite.

Envíales un correo electrónico y pregunta

Dado que este es un problema de configuración del servidor, tal vez debería preguntar en Error del servidor

Editar (ya que está seguro de que el servidor está configurado correctamente)

¿ Has considerado etiquetar tu RewriteCond con un final de línea??

RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)

Will (basado en mi conocimiento limitado) bloquear cualquier url que contenga índice.php, css, gfx ... al principio de una url. Debido a que no tienes un $ al final de la expresión regular, también bloqueará cualquier URL que continúe desde allí...

Es decir, www.yourdomain.com/index.php/something no se redirige, lo mismo con www.yourdomain.com/js/something

Tal vez desee agregar un $, que requerirá que la url finalice inmediatamente después de su expresión regular.

RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)$
 0
Author: Tom Leys,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-13 12:13:38

Aquí hay una vez que atrapé no input file specified justo en la acción:

Esto lo causa:

RewriteRule ^(.*\.swf)$  redirect_php.php/?a=1 [last]

Esto lo corrigió:

RewriteRule ^(.*\.swf)$  redirect_php.php?a=1 [last]

Tenga en cuenta la / antes de la consulta ?

Esto parece realmente relacionado con AcceptPathInfo, que se trata de la capacidad de leer rutas después de nombres de archivo:

http://domain.com/file.php/tricky_path/?regular_query_stuff
 0
Author: Johan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-19 08:38:15

Dado que esta pregunta parece atraer mucha atención, me gustaría proponer otra respuesta para las personas que se encuentran con el mismo problema y no pueden resolverlo con la ayuda de las respuestas existentes. Yo mismo era una de esas personas hasta hace cinco minutos.

Siempre, quiero decir siempre revise los registros de su servidor porque pueden presentar información útil para usted.


Después de revisar los registros de mi servidor (Apache2.4) descubrí que open_basedir causó la problema:

Mod_fcgid: stderr: PHP Warning: Unknown: open_basedir restriction in effect. Archivo (/data / sites/domain/public / index.php) no está dentro de las rutas permitidas: (/usr/local/lib/php:/usr/local/bin:/data/sites/domain / http-docs) en Desconocido en la línea 0

Mod_fcgid: stderr: PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0

En este caso, open_basedir no pudo manejar un enlace simbólico que creé porque apunta al exterior de la configuración de open_basedir. Amplíe la configuración open_basedir también a la nueva ubicación o mueva los archivos requeridos al interior de cualquier directorio permitido..

 0
Author: halfpastfour.am,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-02 21:57:02

Puede que esté usando Nginx, no un Apache. El mensaje de error será el mismo.

Haz eco de tus datos para estar seguro.

echo $_SERVER["SERVER_SOFTWARE"];
 0
Author: Yevgeniy Afanasyev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-25 03:51:44

Tal vez su servidor tiene AcceptPathInfo deshabilitado que es esencial para que ese tipo de URL funcione correctamente. Intenta activarlo:

AcceptPathInfo On

Ok, prueba esta regla:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php(/|$) index.php%{REQUEST_URI} [L]
 -1
Author: Gumbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-13 08:05:41