我有一個 Apache2 虛擬主機,我將在其中托管多個 Laravel 應用程式。
VH 檔案根是/home/user/applications/portal.
Laravel 應用程式位于:
/home/user/applications/portal/larapps/larapp1
/home/user/applications/portal/larapps/larapp2
...
我希望 URL 是這樣的:
http://portal.com/larapp1/...
http://portal.com/larapp2/...
所以這是我的配置:
<VirtualHost *:80>
ServerName portal.com
DocumentRoot /home/user/applications/portal
Alias /larapp1 /home/user/applications/portal/larapps/larapp1/public
<Directory /home/user/applications/portal/larapps/larapp1/public>
RewriteEngine On
RewriteBase /larapps/larapp1/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L]
</Directory>
</VirtualHost>
如果請求是http://portal.com/larapp1那么匹配的路由是我所期望的:Route::get('/',...)。
但是,出乎意料的是,如果我在請求中添加任何 URI,它不會做我想要的。例如,如果請求是http://portal.com/larapp1/foo,則不匹配Route::get('/foo',...)但Route::get('/larapp1/foo',...)。
我應該怎么做才能在沒有前綴/larapp1 的情況下匹配路由?
uj5u.com熱心網友回復:
我找到了!我的錯,我在配置中犯了一個錯誤:我在 RewriteBase 中使用了一個檔案系統路徑,而我應該指示一個基本 URI。這是正確的配置:
<VirtualHost *:80>
ServerName portal.com
DocumentRoot /home/user/applications/portal
Alias /larapp1 /home/user/applications/portal/larapps/larapp1/public
<Directory /home/user/applications/portal/larapps/larapp1/public>
RewriteEngine On
RewriteBase /larapp1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L]
</Directory>
</VirtualHost>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/373149.html
