2015-06-21 121 views
1

我目前正在移動大量的子域名網站成爲子目錄網站的過程。例如site1.website.com => website.com/site1。所有這些網站在同一個目錄中使用相同的代碼。該代碼將讀取站點名稱並加載正確的數據庫(如果存在)。所以我有以下別名格式爲所有網站。刪除index.php從子目錄網站URL

Alias /site1 /var/www/laravel/public 

無需解釋太多,laravel是一個MVC框架和的index.php是,我需要通過將流量路由的唯一文件。正因爲如此,所有的URL都需要以index.php作爲前綴,但這真的很醜,我似乎無法擺脫它。

我嘗試了以下工作時,該網站是一個子域,但它現在不工作。當我使用此代碼website.com/site1/login將重定向到website.com/login。

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

所有的網站都是動態的,所以我不想硬編碼每個網站的規則。有什麼辦法可以解決這個問題嗎?

+0

你能[試試這個(http://sysaxiom.com/remove-publicindex-php-from-your-laravel-project- in-two-steps /)? –

+0

這種工作。該網址不會重定向到主網站,但它仍然會發出404錯誤。在此服務器上未找到請求的URL/site1/login。 –

+0

你有定期的'routes.php'或處理動態的東西嗎? –

回答

1

設置一個RewriteBase新文件夾,就像這樣:

RewriteEngine On 
RewriteBase /site1/ 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 
+0

真棒!這工作。你知道它是否可以動態地做到這一點?我有很多子域名,我將在未來增加更多,所以如果我不必每次都添加一個新域名,那將會很好。 –

+0

我誤解你的問題。我不是真的在爲什麼'RewriteBase /'不行。 Laravel肯定會爲你處理目錄嗎? – PiranhaGeorge

+0

由於某種原因,當我設置RewriteBase /它將只顯示主網站的主頁。你的上面的代碼已經完美運行了,它只是很多手動代碼來編寫,所以如果我可以動態設置基礎,它將是完美的。我有根訪問服務器,所以我可以改變任何我需要在apaches conf文件 –

0

您可以管理從laravel \ config \ database.php爲您的每個站點的連接。

那麼你可以設置所有的子域將點在一個位置,現在你需要更新只需要更新database.php當你添加新的網站。

+0

該數據庫不是問題,它的url中的index.php。數據庫連接工作正常 –