php - Archivo de configuración web para una aplicación codeigniter
iis web-config (5)
Sufro con un archivo de configuración web que no reescribe la url de mi aplicación codeigniter. aquí está el archivo de configuración web.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Clean URL" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
aquí está mi sitio: http://gandhitomodi.com
No puedo obtener este tipo de URL http://gandhitomodi.com/controller/method/
por ejemplo
http://gandhitomodi.com/welcome/index/
Por favor, ayúdame a superar esto.
**** Editado *****
aquí está la ruta.php
$route[''default_controller'']="welcome/index";
$route[''sendmail'']="welcome/send";
aquí está la configuración config.php que he cambiado.
$config[''base_url'']="http://gandhitomodi.com/";
$config[''index_page'']='''';
$config[''url_protocal'']=''PATH_INFO'';`
Primero necesitaremos eliminar index.php de la URL
entonces en route.php cambiarás la línea
$route[''default_controller''] = "welcome";
$route[''404_override''] = ''notfound'';
y en config.php cambiarás la línea
$config[''uri_protocol''] = ''AUTO'';
Después de eso, deberá agregar el archivo .htaccess en el directorio raíz del sitio web de esta manera:
/application
/system
/assets
/.htaccess
y agrega este código al archivo .htaccess
Header append X-FRAME-OPTIONS "SAMEORIGIN"
Header set Cache-Control "no-store"
Header set X-Content-Type-Options "nosniff"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
ErrorDocument 403 /notfound.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
<IfModule !mod_rewrite.c>
# If we don''t have mod_rewrite installed, all 404''s
# can be sent to index.php, and everything works as normal.
# Submitted by: ollakalla
ErrorDocument 404 /index.php
</IfModule>
Entonces puedes acceder a tu método en el controlador como este ejemplo
class Reviews extends CI_Controller
{
public function latest()
{
// Some code here
}
}
¿Has probado este método como mencionas aquí?
también se menciona aquí
https://blogs.msdn.microsoft.com/azureossds/2015/09/28/convert-apache-htaccess-to-iis-web-config/
en la sección Reescritura de URL. Tiene el mismo .htaccess que estoy usando, también hay muchos convertidores en línea a los que puedes probar.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?url={R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
puedes probar este código, funcionará bien, también estoy usando este código solamente
gracias
También tuve un problema cuando estaba trabajando con mssql y el servidor de Windows y la plataforma codeigniter. Es tan difícil para mí eliminar index.php de url o puedes decir pretty url. Después de mucha discusión e I + D. Obtuve algunos cambios en el archivo webcofig en la raíz del servidor.
Reescribir la regla para la configuración web para eliminar index.php es:
<configuration>
<appSettings>
// default code..
</appSettings>
<system.webServer>
<handlers>
<clear />
// another default code
</handlers>
<rewrite>
<rules>
<rule name="Rule" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
<add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Definitivamente su funcionamiento y también la parte restante de codeigniter funciona bien. También es importante establecer la configuración predeterminada de url etc. en routes.php y config.php. Si hay alguna otra ayuda escribe tu comentario.
Para su archivo de configuración, pruebe este artículo . Parece que tu problema está en tu línea de acción.
<action type="Rewrite" url="index.php?{R:1}" appendQueryString="true" />
Cambiar eso a:
<action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
El signo de interrogación está causando tu problema. Además, su línea de coincidencia podría cambiarse a:
<match url="^(.*)$" ignoreCase="false" />
Eso es un poco más específico y podría evitar algunos dolores de cabeza más adelante.