Php 使用htaccess在MVC风格的web应用程序中重写所有可能的URL?

Php 使用htaccess在MVC风格的web应用程序中重写所有可能的URL?,php,laravel,apache,.htaccess,Php,Laravel,Apache,.htaccess,我有一个Laravel风格的MVC网络应用程序。不是用拉威尔语写的,而是类似的概念 在我的dev box上,我的webapp位于自己的“域”中,/public文件夹是文档根目录 文件夹结构 MyProject | +-- App | | | +-- Models | | | +-- Views | | | +-- Controllers | +-- public (doc root) | +-- htaccess

我有一个Laravel风格的MVC网络应用程序。不是用拉威尔语写的,而是类似的概念

在我的dev box上,我的webapp位于自己的“域”中,
/public
文件夹是文档根目录

文件夹结构

MyProject
 | 
 +-- App
 |  |  
 |  +-- Models
 |  |  
 |  +-- Views
 |  |  
 |  +-- Controllers
 |    
 +-- public (doc root)
    |  
    +-- htaccess
    +-- index.php
我使用这个
.htaccess
文件将所有流量路由到位于公用文件夹中的index.php文件

htaccess

因此,当您访问时,您可以很好地使用webapp

现在,为了生产,我必须将项目及其所有文件移动到我们公司域中自己的文件夹中。根据管理员的指示,它不能是子域(这将解决我的所有问题)

因此,必须通过
www.mydomain.com/apps/myproject/
访问它

导航到:
www.mydomain.com/apps/myproject/public
工作正常,网站就会显示出来

导航到“主页”之外会导致所有链接转到:
www.mydomain.com/{controller}/{action}
,而不是位于新的子文件夹中

有没有一种方法可以重写我的应用程序中的所有链接,以便自动转到
/apps/myproject/public
(因为index.php就在那里),而不必遍历所有可能的链接并在
/apps/myproject/public
前面加前缀?

我尝试将新的文件夹结构附加到
htaccess
,但无法使其工作

RewriteBase /apps/myproject/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /apps/myproject/public/^(.*)$ /apps/myproject/public/index.php?$1 [L,QSA]

有关此的详细信息

您可以在文档根目录中使用此附加规则。htaccess:

RewriteEngine On

RewriteRule .* apps/myproject/public/$0 [L]
然后您应该将此规则保存在
/apps/myproject/public/.htaccess
中:

RewriteEngine On
RewriteBase /apps/myproject/public/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?$0 [L,QSA]

也许我没有插入正确的数据,但我无法让它工作。我一直收到500个错误。与您的目录路径交换子目录更改了我的子目录模式后,我可以访问
www.mydomain.com/apps/myproject/public/
中的index.php文件,但没有URL被重新写入以附加
app/myproject/
RewriteEngine On

RewriteRule .* apps/myproject/public/$0 [L]
RewriteEngine On
RewriteBase /apps/myproject/public/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?$0 [L,QSA]