Php 使用htaccess在MVC风格的web应用程序中重写所有可能的URL?
我有一个Laravel风格的MVC网络应用程序。不是用拉威尔语写的,而是类似的概念 在我的dev box上,我的webapp位于自己的“域”中,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
/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]