Удаление index.php не работает - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть этот сайт , и когда вы нажимаете на кнопку в центре, у меня появляется этот URL

 http://dev.posnation.com/welcome/redirect

, который не является подходящей страницей для контроллера приветствия идействие перенаправления.Правильный URL-адрес:

 http://dev.posnation.com/index.php/welcome/redirect

Моя структура codeigniter похожа на эту

-rw-r--r--@  1 tamer  staff   225 Apr 11 13:09 .htaccess
drwxr-xr-x@ 18 tamer  staff   612 Apr  8 17:26 application
drwxr-xr-x  11 tamer  staff   374 Apr 11 09:46 css
drwxr-xr-x@  6 tamer  staff   204 Mar 24 14:20 graphics
drwxr-xr-x  17 tamer  staff   578 Apr 11 09:54 js
drwxr-xr-x@ 10 tamer  staff   340 Apr  7 12:20 system
drwxr-xr-x@ 16 tamer  staff   544 Apr  7 12:20 user_guide

с index.php из одного каталога

мой .htaccess состоит из этого

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Любые идеи

Ответы [ 4 ]

2 голосов
/ 11 апреля 2011

Вы пропустили одну строку правила перезаписи после RewriteCond.Попробуйте

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
1 голос
/ 11 апреля 2011

Codeigniter Wiki предоставляет следующий фрагмент кода:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    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
    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.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
</IfModule>

В вашей конфигурации измените, соответственно, следующую переменную:

config['uri_protocol'] = 'QUERY_STRING'; //set to QUERY_STRING

и

$config['index_page'] = ""; //Remove index.php

убедитесь, что ваш модуль Apache mod_rewrite загружен (только если вышеприведенное выдает 404).

есть еще много проблем, это может быть на http://codeigniter.com/wiki/mod_rewrite/

0 голосов
/ 06 июля 2012

У меня была похожая проблема. Убедитесь, что вы правильно поняли RewriteRule. Разные методы также требуют разных способов отлова переменных. Я видел два вокруг, где один в основном применяет переменную массива $ _GET к переменной url, как показано в примере.

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

RewriteRule ^(.*)$ ./index.php?url=$1 [L,QSA]

Вы можете поймать м соответственно:

echo $_SERVER['PATH_INFO'];

echo $_GET['url'];

CodeIgniter использует index.php? / $ 1. Это вызвало проблемы со мной.

0 голосов
/ 11 апреля 2011

Иногда сложно понять, что будет работать. Попробуйте добавить это как последнюю строку

 RewriteRule ^(.*)$ ./index.php?$1 [L,QSA] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...