Como faço para remover a "index.php"
saliência em cada caminho no codeigniter em algum lugar no centro? Eu quero não limpar index.php-fied URLs
?
Como faço para remover a "index.php"
saliência em cada caminho no codeigniter em algum lugar no centro? Eu quero não limpar index.php-fied URLs
?
Respostas:
Se você estiver usando o Apache, coloque um arquivo .htaccess em seu diretório raiz da web contendo o seguinte:
RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Outra boa versão está localizada aqui:
RewriteCond $1 !^\/(index\.php|assets|robots\.txt)
Tive alguns grandes problemas ao remover o index.php. Como regra geral, o .htaccess abaixo foi testado em vários servidores e geralmente funciona:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
Se você não tiver sorte com isso, o próximo passo é ajustar seu arquivo de configuração. Experimente alguns dos outros protocolos de URI, por exemplo
| 'AUTO' Default - auto detects
| 'PATH_INFO' Uses the PATH_INFO
| 'QUERY_STRING' Uses the QUERY_STRING
| 'REQUEST_URI' Uses the REQUEST_URI
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
$config['uri_protocol'] = 'ORIG_PATH_INFO';
Se você ainda não está tendo sorte, tente alterar a regra de reescrita para incluir sua subpasta. Isso costuma ser um problema se você usar um URL temporário em um servidor de desenvolvimento etc:
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]
Basta brincar com essas opções, uma deve funcionar. Além disso, certifique-se de que seu arquivo de índice esteja definido como:
$config['index_page'] = '';
Boa sorte!
Tenha o arquivo.htaccess no diretório raiz do aplicativo, junto com o arquivo index.php. (Verifique se a extensão htaccess está correta, Bz htaccess.txt não funcionou para mim.)
E adicione as seguintes regras ao arquivo .htaccess,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Em seguida, encontre a seguinte linha em seu arquivo application / config / config.php
$config['index_page'] = 'index.php';
Defina a variável vazia conforme abaixo.
$config['index_page'] = '';
É isso, funcionou para mim.
Se não funcionar, tente substituir a seguinte variável por estes parâmetros ('AUTO', 'PATH_INFO', 'QUERY_STRING', 'REQUEST_URI' e 'ORIG_PATH_INFO') um por um
$config['uri_protocol'] = 'AUTO';
Dê uma olhada no system\application\config\config.php
arquivo, há uma variável chamadaindex_page
Deveria ser assim
$config['index_page'] = "index.php";
mude para
$config['index_page'] = "";
Então, como mencionado, você também precisa adicionar uma regra de reescrita ao .htaccess
arquivo
Nota: no CodeIgniter v2 este arquivo foi movido da pasta do sistema para application\config\config.php
Todos os métodos acima falharam para mim e então descobri que não estava alterando AllowOverride None para AllowOverride All em meu arquivo host virtual em / etc / apache2 / sites-available / default
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All <---- replace None with All
</Directory>
<Directory /var/www >
Options Indexes FollowSymLinks MultiViews
AllowOverride All <--- replace None with All
Order allow,deny
allow from all
</Directory>
...
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /codeigniter/index.php/$0 [PT,L]
após alterar RewriteRule. * index.php / $ 0 [PT, L] com o nome da pasta do projeto "codeigniter". está funcionando para mim. Obrigado pessoal pelo apoio.
Etapa 1 => Coloque seu arquivo .htaccess na pasta raiz onde existem as pastas do aplicativo e do sistema.
Etapa 2 => Se o seu caminho da web estiver usando uma subpasta como - seudominio.com/projeto/ - use o seguinte código no arquivo htaccess
RewriteEngine on
RewriteBase /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]
Se o seu caminho da web usa uma pasta raiz como - seudomínio.com -, use o seguinte código no arquivo htaccess
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Só pensei em adicionar
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
seria o .htaccess e certifique-se de editar sua variável application / config.php da seguinte maneira:
substituir
$config['uri_protocol'] = “AUTO”
com
$config['uri_protocol'] = “REQUEST_URI”
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Isso definitivamente deve funcionar .. tente
Certifique-se de ter ativado mod_rewrite
(eu não tinha).
Para habilitar:
sudo a2enmod rewrite
Além disso, substitua AllowOverride None
porAllowOverride All
sudo gedit /etc/apache2/sites-available/default
Finalmente ...
sudo /etc/init.d/apache2 restart
Meu .htaccess é
RewriteEngine on
RewriteCond $1 !^(index\.php|[assets/css/js/img]|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
actions
: stackoverflow.com/questions/14419757/…
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Este é um .htaccess para um dos meus projetos de CI:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]
A última linha deve fornecer o que você precisa, embora você possa ou não precisar de '/ projectFolder' dependendo de como sua estrutura de pastas está configurada. Boa sorte!
Use mod_rewrite
conforme as instruções neste tutorial do wiki do CI.
Como um arquivo .htaccess, uma boa opção é usar o fornecido pelo Kohana Framework :
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>
# Protect application and system files from being viewed
RewriteRule ^(?:application|system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
É um .htaccess bem pensado que simplesmente funciona.
Existem duas maneiras de resolver index.php no caminho de url para codeigniter
1: Em config / config.php Alterar código:
$config['index_page'] = 'index.php';
para
$config['index_page'] = '';
2: Crie .htacess no caminho raiz se não for criado, copie o seguinte código: -
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Salve-o e verifique em sua configuração do Apache rewrite_module OU mod_rewrite está habilitado. Se não estiver habilitado. (Melhor abordagem)!
Eu testei isso no apache2 em muitas hospedagens diferentes e funciona muito bem.
use este htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
certifique-se de ter enabled mod_rewirte
com umphpinfo();
então faça isso em config / config.php:
$config['index_url'] = '';
|
| 'AUTO' Default - auto detects
| 'PATH_INFO' Uses the PATH_INFO
| 'QUERY_STRING' Uses the QUERY_STRING
| 'REQUEST_URI' Uses the REQUEST_URI
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';
se ainda não funcionar, tente mudar o $config['uri_protocol']='AUTO'
para um dos listados dentroapplication/config/config.php
arquivos na linha 40/54:
às vezes eu usei: em REQUEST_URI
vez de AUTO
ou "QUERY_STRING"
para hospedagens goDaddy
Olhe no \application\config\config.php
arquivo, há uma variável chamadaindex_page
Deveria ser assim
$config['index_page'] = "index.php";
mude para
$config['index_page'] = "";
Então, como mencionado, você também precisa adicionar uma regra de reescrita ao .htaccess
arquivo como esta:
RewriteEngine on
RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Funciona para mim, espero que você também.
Se você estiver no Linux e usando o servidor apache2, então podemos precisar substituir o arquivo apache2.conf também ao lado das mudanças no arquivo .htaccess. Encontre o arquivo de configuração do apache2 em /etc/apache2/apache2.conf .
Pesquisar no diretório / var / www / Alterar AllowOverride Nenhum -> AllowOverride Todos
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory
coloque um arquivo .htaccess em seu diretório raiz da web
Qualquer ajuste que você fizer - se o exposto acima não for atendido - não funcionará. Normalmente está na pasta System, deve estar na raiz. Felicidades!
application
diretório em vez de na raiz.
Eu tentei muitas soluções, mas a que encontrei é esta:
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots \.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]
Isso irei remover o index.php da url conforme necessário.
Eu uso essas linhas no .htaccess
arquivo; que coloco na pasta raiz
RewriteEngine on
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Então posso acessar http://example.com/controller/function/parameter
em vez de http://example.com/index.php/controller/function/parameter
Isso ajudará você a colar este código na pasta do aplicativo no arquivo .htacess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
<IfModule mod_php5.c>
php_value short_open_tag 1
</IfModule>
Este me fez a mágica completa:
RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Espero que ajude!
Oi este me deu certo
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
assim como isso
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
onde a pasta é o nome da subpasta se este aplicativo codeigniter estiver hospedado como um subdomínio, por exemplo, domainname / folder / index.php.
Espero que funcione para você. Obrigado.
Copie o código anterior a seguir em seu .htaccess
RewriteEngine on
Options -Indexes
RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /Foldername of your ci/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Passo 1 :
Adicione isso no arquivo htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
Passo 2 :
Remova index.php na configuração do codeigniter
$config['base_url'] = '';
$config['index_page'] = '';
Etapa 3 :
Permitir substituição de htaccess na configuração do Apache (comando)
sudo nano /etc/apache2/apache2.conf e edite o arquivo e mude para
AllowOverride All
para pasta www
Passo 4 :
Apache mod rewrite ativado (Comando)
sudo a2enmod reescrever
Etapa 5:
Reinicie o Apache (Comando)
sudo /etc/init.d/apache2 restart