2017-06-24 67 views
0

工作,我有這樣的.htaccess在laravel安裝目錄的.htaccess不laravel對生產服務器的共享主機

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

這的.htaccess在public目錄laravel安裝目錄(這一個附帶在laravel)

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

    # Handle Authorization Header 
    RewriteCond %{HTTP:Authorization} . 
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
</IfModule> 

所以,如果我訪問根/安裝目錄在瀏覽器中,這樣http://something其中something是安裝目錄,有它自己的virtual hostlocalhost,那麼它的工作原理,如果我像http://something/public那樣訪問它,那麼它也可以工作。 但是,此設置在生產服務器上不起作用。如果我訪問我的網站(這是一個子域)生產服務器上像這樣http://sub.something.com那麼它不工作,這說明我找不到網頁錯誤,但這個工程http://sub.something.com/public

我在做什麼錯?

我namecheap.com共同主辦

回答

1

上共享託管子域,這是很好的文件夾結構如下所示: 我認爲這是一個Linux服務器(Apache)的

--public_html 
----subdomainFolderName (content of public folder) 
-------.htaccess 
-------index.php 
-------etc 
-------laravelFolder [Public folder will not be inside here] 
----------app 
----------bootstrap 
----------config 
----------etc 

編輯subdomainFolderName/index.php 更改行22

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

TO

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

更改行36 $app = require_once __DIR__.'/../bootstrap/app.php';

TO

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

這樣你就不會發生問題.htaccess和你的URL不會包含/public

+0

這很有趣。似乎更合乎邏輯。讓我試試看。 – StudentX

+0

這很順利:)謝謝。這是我一直喜歡的。 – StudentX

0

在laravel安裝目錄中的.htaccess試試這個。

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

不,沒有工作 – StudentX