如何启用在子域中工作的 Laravel 应用程序来处理来自另一个子域的请求,而不更改浏览器中的 URL?
How to enable the Laravel app working in a subdomain to handle the requests from another subdomain, without changing the URL in the browser?
我的 Laravel 应用程序在 admin
子域中运行:
admin.mysite.com
我想让我的 Laravel 应用程序也能处理来自另一个子域的请求; client.mysite.com
,例如。我正在尝试为此使用 Apache Rewrite 功能;因此,我在 "client" 子域的主目录中创建了以下 .htaccess
文件:
# file: /client/public/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/?([a-zA-Z][a-zA-Z0-9]*)/?(.*)$ https://admin.mysite.com/bu// [L,NC]
</IfModule>
可行,但我绝对不希望在浏览器中更改 URL。为此,我尝试了 [P]
flag 但没有成功。最后,我删除了 https://
部分以避免重定向*:
RewriteRule ^/?([a-zA-Z][a-zA-Z0-9]*)/?(.*)$ admin.mysite.com/bu// [L,NC]
但是,我收到以下错误:
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
如何修复错误并使其正常工作?而且,这是完成此类任务的正确方法吗? (它可以与 POST 一起使用吗?有没有更好的解决方案?)
* 如果您在 RewriteRule
中使用 https://
启动 substitution
参数,它将导致重定向(就像外部使用 [R]
标志重定向)。这将导致浏览器发出新请求,从而更改地址栏中显示的 URL。
此外,请注意我的应用程序位于共享主机上,因此我可能无法访问某些低级功能。
将 client.mysite.com
的 DOCUMENT_ROOT
设置为指向主 Laravel 应用程序所在的同一目录(在您的情况下,将其设置为 /admin/public
)。然后使用 subdomain routing facility in Laravel; the subdomain may be specified by calling the domain()
方法:
Route::domain('client.mysite.com')->group(function () {
Route::get('{username}', function ($username) {
//
});
});
我的 Laravel 应用程序在 admin
子域中运行:
admin.mysite.com
我想让我的 Laravel 应用程序也能处理来自另一个子域的请求; client.mysite.com
,例如。我正在尝试为此使用 Apache Rewrite 功能;因此,我在 "client" 子域的主目录中创建了以下 .htaccess
文件:
# file: /client/public/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/?([a-zA-Z][a-zA-Z0-9]*)/?(.*)$ https://admin.mysite.com/bu// [L,NC]
</IfModule>
可行,但我绝对不希望在浏览器中更改 URL。为此,我尝试了 [P]
flag 但没有成功。最后,我删除了 https://
部分以避免重定向*:
RewriteRule ^/?([a-zA-Z][a-zA-Z0-9]*)/?(.*)$ admin.mysite.com/bu// [L,NC]
但是,我收到以下错误:
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
如何修复错误并使其正常工作?而且,这是完成此类任务的正确方法吗? (它可以与 POST 一起使用吗?有没有更好的解决方案?)
* 如果您在 RewriteRule
中使用 https://
启动 substitution
参数,它将导致重定向(就像外部使用 [R]
标志重定向)。这将导致浏览器发出新请求,从而更改地址栏中显示的 URL。
此外,请注意我的应用程序位于共享主机上,因此我可能无法访问某些低级功能。
将 client.mysite.com
的 DOCUMENT_ROOT
设置为指向主 Laravel 应用程序所在的同一目录(在您的情况下,将其设置为 /admin/public
)。然后使用 subdomain routing facility in Laravel; the subdomain may be specified by calling the domain()
方法:
Route::domain('client.mysite.com')->group(function () {
Route::get('{username}', function ($username) {
//
});
});