2016-06-09 3 views
2

http://domain.com/public/index.phphttp://domain.com으로 어떻게 바꿀 수 있으며 ('/') 이외의 다른 경로를 사용할 수 있습니까?Laravel 5.2 예쁜 URL

해결 방법 1 :

가상 호스트 파일 :

<VirtualHost *:80> 
    DocumentRoot "/var/www/html/domain/public" 
    ServerName domain.com 
    <Directory "/var/www/html/domain/public"> 
     AllowOverride All 
     Allow from All 
    </Directory> 

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

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] 
</IfModule> 

, 그래 내가 http://domain.com을 설정할 수 있어요 하지만 내가 노력하고있어. g는 다른 경로를 호출하여 404를 얻습니다.이 이유는 내 루트 폴더를 공개로 설정 한 것을 볼 수 있기 때문입니다. 따라서 내 노선은 내 컨트롤러가 공용 폴더에 없기 때문에 내 목적지로 이동할 수 없습니다 (내 컨트롤러로 연결되는 것과 같습니다).

해결 방법 2 : 내가 /var/www/html/domain/에 난 내 꽤 URL과 유일한 방법은 내가 http://domain.com/public/index.php를 입력하여 메인 페이지를 요청할 수 있습니다을 잃고 이번에는 문서 루트 디렉토리를 변경하는 경우
.

우분투 14.04를 사용하고 있습니다.

무엇을 제안합니까?

--- 갱신 ---
경로 예 :

Route::get('myroute', array(
    'uses' => '[email protected]', 
    'as' => 'myroute' 
)); 

--- 업데이트 2 --- PHP 장인 경로 : 목록 결과가

+--------+----------+---------+------+---------+------------+ 
| Domain | Method | URI  | Name | Action | Middleware | 
+--------+----------+---------+------+---------+------------+ 
|  | GET|HEAD |/  |  | Closure | web  | 
|  | GET|HEAD | myroute |  | Closure | web  | 
+--------+----------+---------+------+---------+------------+ 
+0

가상 호스트 **는 ** 공용 폴더를 가리켜 야합니다. 임시 해결 방법 및 트릭이 필요하지 않습니다. 404를 얻는 경로를 정의하는 방법을 볼 수 있습니까? – TheFallen

+0

가상 호스트 분할이 제대로 작동해야합니다. 당신의 묘사에서 당신은 피난처가 된 것처럼 보이지만 Laravel이 어떻게 작동하는지 이해하게되었습니다. 진입 점은 항상'index.php'가 될 것입니다. 우리가 virtualhost를 public 디렉토리로 가리키더라도, 모든 요청은'index.php' 파일에 도달합니다. 그러면'index.php' 파일이 필요에 따라 부트 스트랩하고 요청을 라우팅합니다. 모든 경로가 정상적으로 작동해야합니다. – saji89

+0

@ TheFallen 게시물을 업데이트했습니다. –

답변

0

그래, 그 대답은 훌륭하게 작동하지만 그 전에는 모듈을 다시 작성했다는 것을 알았습니다. mod_rewrite가 이미 활성화되어 있어야합니다.

우분투 콘솔에서 : a2enmod rewrite 내 상황이 해결되었습니다.

3

당신은 필요하다 웹 서버의 config 파일에서 가상 호스트를 올바르게 설정하십시오. public directory as root directory for Laravel VH and restart web server을 설정하십시오.

아파치를 들어 이러한 지침을 사용할 수 있습니다 nginx를 들어

DocumentRoot "/path_to_aravel_project/public" 
<Directory "/path_to_aravel_project/public"> 

, 당신이 줄을 변경해야합니다

root /path_to_aravel_project/public; 
+0

고맙지 만 내 구성은 이미 이렇게 설정되었습니다. 내가 이렇게 설정하면 내 경로에 연결할 수 없습니다. –

+0

'php artisan route : list'의 결과물을 사용하고 싶습니다. 또한,'.htaccess' 또는'index.php'를 편집 했습니까? –

+0

게시물을 업데이트했습니다. 아니, 나는 .htaccess 또는 index.php를 변경하지 않았습니다. –

2

이 내 프로젝트에이 처리하는 방법입니다. 두 단계가 있습니다.

1.create 다음과 같은 내용으로 사용자의 공용/디렉토리에 새로운 htaccess로 파일 :

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

RewriteEngine On 

# Redirect Trailing Slashes If Not A Folder... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

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

2. 프로젝트 루트에 server.php라는 이름의 파일 .. (의 부모가 앱, 공개 등).

을되는 index.php 그리고 그것은 어떤 번거 로움없이 .. 작업을해야

이름을 바꿉니다.

+0

죄송하지만 실제로 작동하지 않습니다. –

+0

은 항상 저에게 도움이됩니다. 이후에 관찰 한 변경 사항을 공유해주십시오. 아니면 전혀 변화가 없습니다 .. –