2013-06-18 3 views
0

내 웹 사이트는 로컬에서 정상적으로 작동하지만 내 호스트 (GoDaddy)에 업로드 할 때 끊어졌습니다. 내 웹 사이트의 링크를 클릭하면 "입력 파일이 지정되지 않았습니다." 나는이 우연히 - https://github.com/EllisLab/CodeIgniter/wiki/Godaddy-Installation-Tips 그리고 처음으로 팁을 시도Codeigniter가 GoDaddy에서 깨기

반대로
$config['index_page'] = "index.php?"; 

그것은 일반적으로

이 지금 내 웹 사이트 링크가 분리되지 않습니다, 동작 (물음표없이)를 설정 어떻게 더 이상. 그러나 지금 내 LightOpenID 라이브러리는 (끝없이 리디렉션 됨)을 나눕니다.

사람이 URL을 무슨 일이 일어나고 있는지에 대한 명확한 설명이 있고 나도 A를 할 수있는)를 유지의 index.php에서 물음표를 제거하고 여전히 내 웹 사이트 작업 또는 B)가있는 경우? 내 LightOpenID 라이브러리를 손상시키지 않는 방법을 알아 냈습니다.

+1

goddady = 최악의 호스트, 지금 이동; 감사합니다 후자입니다 –

+0

롤 ... 이미 지불 ... –

답변

0

다곤, 사용중인 서비스 및 기술 동작에 대한 적절한 세부 정보를 모르는 경우 어떤 서비스에 대해서도 언급하지 마십시오. 오히려 https://github.com/EllisLab/CodeIgniter/wiki/Godaddy-Installation-Tips에 다음 단계에 비해

, 다음 단계를 수행

이동하여에서 GoDaddy 계정 파일 관리자 -> 웹 루트 디렉토리 -> 존재하지 않는 장소가 라인을 다음과 같은 경우 php5.ini 만들기 : CGI를. 당신의 계정 관리자에

로그 : fix_pathinfo는 =

1 지금 당신은 당신의 웹 프로세스를 다시 시작해야합니다. 웹 호스팅을 클릭하십시오. 사용할 호스팅 계정 옆에있는 실행을 클릭하십시오. 통계에서 & 모니터 섹션에서 시스템 프로세스를 클릭하십시오. 왼쪽의 목록에서 보려는 프로세스를 클릭하거나 모든 프로세스를 한 번에 보려면 모든 프로세스를 클릭하십시오. 프로세스를 끝내려면 도구 모음에서 해당 끝 버튼을 클릭하십시오.

이제 자동으로 URI_PROTOCOL을 사용할 수 있습니다.

0

당신은 여전히 ​​index.php를 건너 뛸 수 있습니까? $ config [ 'index_page']에 있습니다.

$ conifg [ 'base_url'] = 'http://www.randomsite.com/module/'와 (과) 같이 codeingniter 설치 디렉토리 에 $ conifg [ 'base_url']을 수정해야합니다.

이것은 나를 위해 잘 작동했습니다. 이제 사이트가 올바르게 라우팅되어 있고 'index.php'가 없습니까? 또한

는, 당신은에 CI 위키에 CodeIgniter를 설치 팁을 사용하여 매우 성공적으로 설정할 수 있습니다

1

CodeIgniter의 GoDaddy를 공유가

호스팅에 매우 성공적으로 작동 CodeIgniter의의 GitHub의 저장소에 위의 링크를 클릭하십시오 GitHub.

이 지침은 GoDaddy 공유 호스팅을위한 것입니다.공유 호스팅은 사이트가 여러 다른 GoDaddy 고객과 단일 웹 서버 인스턴스를 공유하고 있고 서버 인스턴스의 IP 주소가 모호하기 때문에 웹 서버가 URI 도메인 이름을 사용하여 특정 사용자에게 경로를 지정한다는 것을 의미합니다. 가상 사설 호스팅 (VPS) 및 개인 IP 주소가있는 경우 이러한 지침이 필요하지 않습니다. 하지만 대부분의 사람들이 GoDaddy 호스팅에서 CodeIgniter를 사용하는 데 따르는 문제는 공유 호스팅의 작동 방식으로 인해 발생하는 문제와 관련이 있으므로 유용해야합니다.

사람들이 때때로 가지고있는 또 다른 문제는 GoDaddy 공유 호스팅 계정을 다양한 기술을 테스트하기위한 "샌드 박스"로 사용한다는 것입니다. 그렇게하기 때문에 CodeIgniter 인스턴스를 어디에 두어야하는지, 그리고 CodeIgniter와 관련하여 사용중인 다른 기술을 어디에 둘 것인지에 대한 추가 고려 사항이 있습니다. 또한 단일 호스팅 공간에서 다양한 측면을 테스트하기 위해 WordPress, Drupal 및 Joomla 인스턴스가 있습니다. CodeIgniter 측면에서 잘 작동합니다.

CodeIgniter 인스턴스가 서버의 공유 호스팅 계정 공간의 루트 디렉토리가 아닌 하위 디렉토리에 있으면 작동 할 수 있으며 설정에 수용되어야합니다.

GoDaddy에서 CodeIgniter를 조정하려면 두 가지 설정이 필요합니다. 첫 번째 파일은 CodeIgniter의 config.php 파일에 있고 두 번째 파일은 CodeIgniter 인스턴스가 들어있는 루트 폴더의 .htaccess 파일에 있습니다.

CodeIgniter의 config.php를 된답니다 응용 프로그램에서 발견/설정/config.php를

$config['base_url'] = ''; 

$config['index_page'] = 'index.php?'; 

$config['uri_protocol'] = 'QUERY_STRING'; 

먼저 CodeIgniter의를 포함하는 루트 폴더에 htaccess로 파일을 고려 간단한 경우 경우 CodeIgniter는 공유 호스팅 계정의 문서 루트에 있습니다. 다음은 위의 설정과 함께 사용되는 기본 .htaccess 파일 내용입니다.

줄에는 UNIX 스타일의 줄 끝 문자 (예 : lf 문자 만 해당)가 있어야합니다. 줄 끝 부분에 cr/lf를 넣는 편집기 (예 : Windows 메모장)를 사용하지 않아야합니다. 그렇지 않으면 업로드 전이나 업로드 중에 만 lf로 변경하는 방법이 있어야합니다.

파일을 FTP 서버로 전송할 때 FTP 클라이언트는 줄 끝 문자를 lf 이외의 것으로 바꾸지 않아야합니다. 전송할 때 Windows 스타일 (즉 cr/lf)에서 UNIX 스타일 (예 : lf)로 줄 끝 문자를 수정할 수있는 FTP 클라이언트를 사용하는 경우 업로드시 cr/lf 문제를 수정할 수 있습니다. 섬기는 사람.

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

계정의 폴더를 공유 호스팅/파일이 지금과 비슷해야합니다

... 
html/application 
html/system 
html/user_guide 
... 
html/.htaccess 
... 

경우 HTML 공유 호스팅 계정의 문서 루트 폴더입니다.

.htaccess의 첫 번째 줄은 재기록이 켜져 있음을 보장합니다.

CodeIgniter 내의 리소스는 URL/컨트롤러/메소드/매개 변수 유형 구조가있는 URI를 사용하여 참조됩니다. 다음 두 행은 실제로 존재하지 않는 파일과 디렉토리에만 다시 쓰기 규칙을 적용합니다.

CodeIgniter 컨트롤러가 아닌 실제 디렉터리 및/또는 CodeIgniter 외부의 파일 이름을 참조하려면 해당 코드를 다시 작성해야합니다.CodeIgniter와 함께 제공되는 CodeIgniter User Guide는 CodeIgniter 인스턴스 외부에 존재하며 보통 CodeIgniter 인스턴스와 동일한 루트 폴더에 있으며 user_guide 폴더로 기본 설정되어 있습니다. CodeIgniter 외부의 실제 폴더에서 사용자 가이드를 참조 할 수 있도록하려면 다시 쓰기 규칙을 비활성화해야합니다. 이것은 CodeIgniter 외부의 다른 "실제"폴더에 적용됩니다.

보안상의 이유로 CodeIgniter의 폴더 구조에있는 실제 폴더/파일에는 고유 한 .htaccess 파일이있어 URI로 직접 액세스하지 못하도록합니다. CodeIgniter가 생성하기를 원하는 실제 폴더를 보호해야합니다. CodeIgniter의 자체 .htaccess 파일을 폴더에서 보면 어떻게하는지 보여줍니다.

Deny from all 

CodeIgniter의 GoDaddy를 작업에 도착하는 호스팅, 우리가 정말의 index.php를 사용하여 해제되지 않은 공유 다음은 다음과 같은 하나의 문장을 포함? CodeIgniter에서. 대신 CodeIgniter의 컨트롤러/메소드/매개 변수 구조에 대해 HTML 쿼리 문자열 메커니즘을 사용하고 있습니다. 마지막 규칙은 index.php를 보장합니까? URI에 컨트롤러/메소드/매개 변수 구조가 삽입되어 처리 할 CodeIgniter의 index.php에 대한 쿼리 문자열로 만들어집니다.

CodeIgniter 인스턴스가 공유 호스팅 계정의 루트 문서 디렉토리 및 해당 도메인을 가리키는 도메인 이름에있는 경우 모두 작동합니다. 다른 기술과

공유 문서 루트 당신이 다른 기술 (예를 들어, 줌라, 워드 프레스, 드루팔 등)만큼 함께 공유 호스팅 문서 루트에 CodeIgniter를 넣으면

위의 설정 작동합니다 다른 기술은 CodeIgniter 폴더 및 파일과 충돌하지 않는 실제 폴더/파일에 포함됩니다. CodeIgniter의 인스턴스

에 대한 하위 디렉토리를 사용

때로는 CodeIgniter는이 하위 디렉토리에, 대신, 공유 호스팅 계정의 루트 문서 디렉토리에 있어야하지만,하지 않는 것이 바람직하다. Drupal, WordPress 및 Joomla 인스턴스를 CodeIgniter 폴더 구조에 포함시키지 않기 위해이 작업을 수행합니다. 이 작업을 수행하려면 .htaccess 파일에 추가 명령문이 필요합니다. 예를 들어 CodeIgniter가 공유 호스팅 계정의 문서 루트에 종속적 인 code-igniter라는 디렉토리에 존재하게하려면 다음 .htaccess 파일이 CodeIgniter의 루트에 대한 하위 폴더를 사용할 수 있습니다. 이 경우, 하위 폴더라는 이름의 코드 이그나이터 인 CodeIgniter의의 루트 대신, 공유 호스팅 계정의 문서 루트 폴더 내에 배치되지만 안 :

RewriteEngine on 
RewriteBase /code-igniter/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

이 예제의 디렉토리 구조 HTML은 공유 호스팅 계정의 문서 루트이며, 코드 이그나이터는 CodeIgniter의 인스턴스의 루트 폴더입니다

html/code-igniter/application 
html/code-igniter/system 
html/code-igniter/user_guide 
... 
html/code-igniter/.htaccess 

: 유사하다.

추가 RewriteBase 행은 CodeIgniter 인스턴스의 루트 디렉토리 인 디렉토리에서 항상 다시 쓰기가 가능하도록합니다. 후속 라인은 여전히 ​​다른 기술에 대한 내 문서 루트의 실제 폴더/파일에도 재 작성이 적용되지 않도록합니다. CodeIgniter가 GoDaddy 공유 호스팅에서 두 가지 시나리오로 작동하도록하는 일이 드물기를 바랍니다.

CodeIgniter 인스턴스가 여러 하위 디렉토리에 종속되어있는 경우에도 동일한 솔루션이 변경되지 않고 작동합니다. 예를 들어, 가정 공유 호스팅 계정의 문서 루트는 HTML 디렉토리이며, CodeIgniter의 인스턴스 내 응용 프로그램 디렉토리에 코드 이그나이터 디렉토리 하위에 종속 :

html/my-application/code-igniter/application 
html/my-application/code-igniter/system 
html/my-application/code-igniter/user_guide 

당신이 하나 개의 인스턴스를 사용하려는 경우이 배열은 유용 파일 저장시 개발 인스턴스의 변경 사항을 자동으로 푸시하고 통합 테스트 및 제작을위한 배포를 위해 다른 하위 디렉토리에 다른 인스턴스가있는 IDE로 개발합니다. .htaccess 및 config.php 파일은 수정없이 작동합니다.

+0

사실,이 솔루션은 CI 렌더링 페이지에 대한 쿼리 문자열을 사용하는 것과 충돌 할 가능성이 높습니다. 그러나 이는 렌더링 된 모든 CI 페이지가 쿼리 문자열을 대신 사용하는 이유를 묻습니다. 정상적인 CI 매개 변수 구조. – Jim