복붙노트

URL에서 'public / index.php'를 어떻게 제거 할 수 있습니까?

PHP

URL에서 'public / index.php'를 어떻게 제거 할 수 있습니까?

기본적으로 나는 laravel에서 생성 된 URL에서 index.php 또는 public / index.php를 제거해야합니다. 일반적으로 localhost / public / index.php / someWordForRoute 경로는 localhost / someWordForRoute와 유사해야합니다.

htaccess

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php[L]

app / config / app.php

'url' => 'http://localhost',

내가 어떻게 바꿀 수 있니?

해결법

  1. ==============================

    1.아직 없으면 Laravel 루트 디렉터리에 .htaccess 파일을 만듭니다. 이미 존재하지 않는 경우 .htaccess 파일을 Laravel 루트 디렉토리에 작성하십시오. (일반적으로 귀하의 public_html 폴더 아래에 있습니다)

    아직 없으면 Laravel 루트 디렉터리에 .htaccess 파일을 만듭니다. 이미 존재하지 않는 경우 .htaccess 파일을 Laravel 루트 디렉토리에 작성하십시오. (일반적으로 귀하의 public_html 폴더 아래에 있습니다)

    .htaccess 파일에 다음 코드가 포함되도록 편집하십시오.

    <IfModule mod_rewrite.c>
       RewriteEngine On 
       RewriteRule ^(.*)$ public/$1 [L]
    </IfModule>
    

    이제 "/ public / index.php /"부분없이 웹 사이트에 액세스 할 수 있어야합니다.

    루트 디렉토리에 새 폴더를 만들고 공용 폴더를 제외한 모든 파일과 폴더를 이동합니다. 당신은 당신이 원하는 무엇이든 부를 수 있습니다. "laravel_code"를 사용하겠습니다.

    다음으로 모든 것을 public 디렉토리에서 루트 폴더로 이동하십시오. 다음과 비슷한 결과가 나옵니다.

    그 후에 laravel_code / bootstrap / paths.php 파일과 index.php 파일의 위치를 ​​편집하면됩니다.

    laravel_code / bootstrap / paths.php에서 다음 코드 행을 찾으십시오.

    'app' => __DIR__.'/../app',
    'public' => __DIR__.'/../public',
    

    그리고 그 (것)들을에 바꾸십시오 :

    'app' => __DIR__.'/../app',
    'public' => __DIR__.'/../../',
    

    index.php에서 다음 행을 찾으십시오.

    require __DIR__.'/../bootstrap/autoload.php';     
    $app = require_once __DIR__.'/../bootstrap/start.php';
    

    그리고 그 (것)들을에 바꾸십시오 :

    require __DIR__.'/laravel_code/bootstrap/autoload.php';     
    $app = require_once __DIR__.'/laravel_code/bootstrap/start.php';
    

    출처 : Laravel에서 / public / URL을 삭제하는 방법

  2. ==============================

    2.Laravel 4.2에서이 작업을 시도했습니다.

    Laravel 4.2에서이 작업을 시도했습니다.

    Laravel 루트 폴더에있는 server.php의 이름을 index.php로 변경하고 .htaccess 파일을 / public 디렉토리에서 Laravel 루트 폴더로 복사하십시오.

    나는 그것이 작동되기를 바란다.

  3. ==============================

    3.URL은 공개 URL을 삭제하는 간단한 단계입니다 (Laravel 5).

    URL은 공개 URL을 삭제하는 간단한 단계입니다 (Laravel 5).

    1 : 공용 폴더의 모든 파일을 복사하여 laravel 루트 폴더에 붙여 넣습니다.

    2 : index.php를 열고 변경하십시오.

    에서

     require __DIR__.'/../bootstrap/autoload.php';
    

     require __DIR__.'/bootstrap/autoload.php';
    

    $app = require_once __DIR__.'/../bootstrap/app.php';
    

    $app = require_once __DIR__.'/bootstrap/app.php';
    

    laravel 4 경로 2는 $ app = require_once __DIR __. '/ bootstrap / start.php'; 대신 $ app = require_once __DIR __. '/ bootstrap / app.php'; / app.php

    그게 다야.

  4. ==============================

    4.1) mod_rewrite가 활성화되어 있는지 확인하십시오. / etc / apache2 / mods-enabled 디렉토리로 가서 rewrite.load를 사용할 수 있는지 확인하십시오. 그렇지 않은 경우 sudo a2enmod rewrite 명령을 사용하여 활성화하십시오. 다시 쓰기 모듈이 활성화됩니다. 이미 활성화되어 있으면 모듈 다시 쓰기가 이미 활성화되었습니다.라는 메시지가 표시됩니다. 2) http : //localhost/public/index.php를 제공하는 대신 http://example.com/index.php와 같은 것을 사용할 수 있도록 공개 디렉토리 용 가상 호스트를 만듭니다. [따라서 공용 폴더 이름은 숨겨집니다] 3) 그런 다음 .htaccess 파일을 만들어 루트 디렉토리 (공용 폴더)에있는 url에서 index.php를 숨 깁니다.

    1) mod_rewrite가 활성화되어 있는지 확인하십시오. / etc / apache2 / mods-enabled 디렉토리로 가서 rewrite.load를 사용할 수 있는지 확인하십시오. 그렇지 않은 경우 sudo a2enmod rewrite 명령을 사용하여 활성화하십시오. 다시 쓰기 모듈이 활성화됩니다. 이미 활성화되어 있으면 모듈 다시 쓰기가 이미 활성화되었습니다.라는 메시지가 표시됩니다. 2) http : //localhost/public/index.php를 제공하는 대신 http://example.com/index.php와 같은 것을 사용할 수 있도록 공개 디렉토리 용 가상 호스트를 만듭니다. [따라서 공용 폴더 이름은 숨겨집니다] 3) 그런 다음 .htaccess 파일을 만들어 루트 디렉토리 (공용 폴더)에있는 url에서 index.php를 숨 깁니다.

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

    5.내가 사용하고있는 스 니펫을 다른 옵션과 혼동하지 말고 유용 할 것입니다. 루트에 아래 htacces를 넣으십시오.

    내가 사용하고있는 스 니펫을 다른 옵션과 혼동하지 말고 유용 할 것입니다. 루트에 아래 htacces를 넣으십시오.

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule    ^$    public/    [L]
        RewriteRule    (.*) public/$1    [L]
    </IfModule>
    

    공개 디렉토리로 이동하여 아래 코드 스 니펫과 함께 다른 htaccess 파일을 넣으십시오.

    <IfModule mod_rewrite.c>
        RewriteEngine On
        # Removes index.php from ExpressionEngine URLs  
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
    
    </IfModule>
    

    그것의 작업 ... !!!

  6. ==============================

    6.이것은 Laravel과 당신의 아파치 환경 설정과 관련이 거의 없다.

    이것은 Laravel과 당신의 아파치 환경 설정과 관련이 거의 없다.

    Apache 서버 설정에 액세스 할 수 있습니까? 그렇다면 문서에서 확인하십시오.

    내가 이것을 먼저 언급하는 이유는 가능한 경우 .htaccess를 완전히 없애고 VirtualHost 태그 내부에 Directory 태그를 사용하는 것이 가장 좋습니다. 즉, 나머지는 당신이 어떤 이유로 든 .htaccess 경로를 고수하고 있다고 가정합니다.

    이 문제를 해결하려면 몇 가지 일이 발생할 수 있습니다.

    희망이 도움이됩니다. 가장 일반적인 문제의 이름을 지정했지만 좀 더 평범하거나 고유 할 수있는 몇 가지 다른 문제가 있습니다. dev에 서버에 대한 또 다른 제안? Apache를 다시 설치하십시오. 가능한 경우, 좋은 자습서로 다른 소스에서 그렇게하십시오.

  7. ==============================

    7.Laravel은 예쁜 URL로 배송합니다 .htaccess는 이미 ... 상자에서 나오려면 좋을 것입니다 ... http://laravel.com/docs/installation#pretty-urls

    Laravel은 예쁜 URL로 배송합니다 .htaccess는 이미 ... 상자에서 나오려면 좋을 것입니다 ... http://laravel.com/docs/installation#pretty-urls

    mod_rewrite가 활성화되어 있고 홈 경로가 응용 프로그램의 공용 디렉토리로 설정되어 있는지 확인하십시오.

  8. ==============================

    8.Laravel 4 & 5의 경우 :

    Laravel 4 & 5의 경우 :

    그게 전부 야 !! :)

  9. ==============================

    9.

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

    .htaccess에서 이것을 사용하고 서버를 다시 시작하십시오.

  10. ==============================

    10.그것이 나를 위해했던 것처럼 이것이 도움이되기를 바랍니다.

    그것이 나를 위해했던 것처럼 이것이 도움이되기를 바랍니다.

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
    </IfModule>
    
  11. ==============================

    11.Laravel 루트 폴더에있는 server.php의 이름을 index.php로 변경하고 .htaccess 파일을 / public 디렉토리에서 Laravel 루트 폴더로 복사하십시오. - 그게 전부 야 !! :)

    Laravel 루트 폴더에있는 server.php의 이름을 index.php로 변경하고 .htaccess 파일을 / public 디렉토리에서 Laravel 루트 폴더로 복사하십시오. - 그게 전부 야 !! :)

  12. ==============================

    12.방금 프로젝트에 Laravel 5를 설치했고 server.php라는 루트에 파일이 있습니다.

    방금 프로젝트에 Laravel 5를 설치했고 server.php라는 루트에 파일이 있습니다.

    그것을 index.php로 변경하면 작동하거나 터미널에 입력합니다 :

    $cp server.php index.php
    
  13. ==============================

    13.

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)/(public)/(index.php)/$ $1/$4 [L]
    </IfModule>
    
  14. ==============================

    14.Laravel 5.3에 따라 위의 것들이 제대로 작동하지 않을 것이지만 침착하게 아래 단계를 따르십시오.

    Laravel 5.3에 따라 위의 것들이 제대로 작동하지 않을 것이지만 침착하게 아래 단계를 따르십시오.

    1 단계. laravel 프로젝트 내부로 이동합니다. 2 단계. 하나의 임의의 디렉토리 / 폴더를 만듭니다. 라라벨 코드 3 단계. 모든 폴더 및 파일 이동 (공용 폴더 제외) 4 단계. 공용 폴더 안에있는 모든 폴더 및 파일을 laravel 프로젝트로 이동합니다. 5 단계. 이제 laravel 프로젝트 안에 index.php 파일이 있습니다. 이전에 "DIR. require / / bootstrap / autoload.php '와 같이 새 경로마다 부트 스트랩의 폴더 경로를 변경하고 엽니 다." 이제 "DIR이 필요합니다."/ laravelcode / bootstrap / autoload.php '; "

    그게 아래처럼 public과 index.php없이 url을 실행 한 것입니다. http : // localhost / blog /

  15. from https://stackoverflow.com/questions/23837933/how-can-i-remove-public-index-php-in-the-url-generated-laravel by cc-by-sa and MIT license