2015-06-21 120 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。数据库连接工作正常 –