goo*_*ser 5 apache subdomain .htaccess laravel
我的 Laravel 应用程序在admin子域中工作:
admin.mysite.com
Run Code Online (Sandbox Code Playgroud)
我想让我的 Laravel 应用程序也能处理来自另一个子域的请求; client.mysite.com, 例如。我正在尝试为此利用Apache 重写功能;因此,我.htaccess在“客户端”子域的主目录中创建了以下文件:
# file: /client/public/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/?([a-zA-Z][a-zA-Z0-9]*)/?(.*)$ https://admin.mysite.com/bu/$1/$2 [L,NC]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这有效,但我绝对不希望在浏览器中更改 URL。为此,我尝试了[P]标志但没有成功。最终,我删除了该https://部分以避免重定向*:
RewriteRule ^/?([a-zA-Z][a-zA-Z0-9]*)/?(.*)$ admin.mysite.com/bu/$1/$2 [L,NC]
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
由于可能的配置错误,请求超出了 10 个内部重定向的限制。如有必要,请使用“LimitInternalRecursion”来增加限制。使用“LogLevel debug”获取回溯。
如何修复错误并使其正常工作?而且,这是完成这样一项任务的正确方法吗?(它是否适用于 POST 和所有内容?有没有更好的解决方案?)
*如果您substitution在RewriteRulewith 中开始参数,https://它将导致重定向(就像使用[R]标志的外部重定向一样)。这将导致浏览器发出新请求,从而更改地址栏中显示的 URL。
另外,请考虑我的应用程序在共享主机上,因此我可能无法访问某些低级功能。
设置DOCUMENT_ROOT你的client.mysite.com指向相同的目录,其中主要Laravel应用程序驻留(在你的情况下,将其设置为/admin/public)。然后利用Laravel 中的子域路由功能;可以通过调用domain()方法指定子域:
Route::domain('client.mysite.com')->group(function () {
Route::get('{username}', function ($username) {
//
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |