Como faço para remover index.php
do meu URL no CodeIgniter?
Eu removi index.php
do meu arquivo de configuração, e eu corri meu rewrite_module
no Apache (2.2.11) e meu .htaccess arquivo é:
RewriteEngine on
RewriteCond $1 !^(index.php|images|captcha|css|js|robots.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Agora, sempre que clico em qualquer link, mostra que o URL não foi encontrado. Qual é o problema?
Respostas:
4 para resposta № 1Experimente isso em sua .htaccess file: Os comentários devem ajudar a ajustá-lo para você ...
Isso funciona perfeitamente para mim em várias instalações do site CodeIgniter. Além disso, se o mod_rewrite não estiver instalado, ele o enviará para uma página 404 (ou você pode alterá-lo para o seu propósito).
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#"system" can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ index.php/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn"t true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#This last condition enables access to the images and css folders, and the robots.txt file
RewriteCond $1 !^(index.php|(.*).swf|images|robots.txt|css|docs|cache)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<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.
ErrorDocument 404 /application/errors/404.php
</IfModule>
Verifique seu arquivo de hosts virtuais e veja se você tem esses itens definidos - eles podem permitir que seu arquivo .htaccess reescreva o arquivo. URL corretamente:
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
3 para resposta № 2
Este 100% funciona, eu já tentei. só o seguinte em seu .htaccess Arquivo:
RewriteEngine On
RewriteCond $1 !^(index.php|(.*).swf|robots.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
2 para resposta № 3
Eu também tive um problema com a regra de reescrita sugerida no guia do usuário do CodeIgniter. Eu resolvi isso removendo a barra da frente do index.php
RewriteRule ^(.*)$ index.php/$1 [L]
0 para a resposta № 4
Primeiro de tudo, certifique-se de ter definido um controlador padrão. Então, certifique-se de construir URLs de tal forma que existe um controlador associado a eles. Por exemplo,
Pagina inicial:
example.com/home/
Ou para o Sobre nós página:
example.com/about/
Verifique também se você ativou o módulo de modificação de regravação.
0 para a resposta № 5
Eu também tive esse problema e descobri que a resposta de Shane me ajudou a sair. WAMP.
RewriteBase /mysite/
o mysite
é o alias como definido no Apache. Isso funcionou para todos os meus sites.
0 para a resposta № 6
.htacess
RewriteEngine on
#Any HTTP request other than those for index.php,
#assets folder, files folder and robots.txt
#is treated as a request for your index.php file.
RewriteCond $1 !^(index.php|assets|files|robots.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
depois disso, vá para application/config/config.php
e modifique estas duas variáveis com os valores mencionados abaixo.
$config["base_url"] = "";
e
$config["index_page"] = "";
0 para resposta № 7
Para todos os meus projetos da Codeigniter, eu uso o código .htaccess abaixo:
RewriteEngine on
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Eu espero que isso ajude.