laravel - 如何使用动态路径名路由域子文件夹?
问题描述
我有两个项目文件夹,例如 blog1 和 blog2。
/var/www/html/blog1
/var/www/html/blog2/laravel
我将其作为子文件夹而不是子域进行。
blog1 文件夹由 laravel 项目组成。在 blog2 文件夹中,有一个名为 laravel 的文件夹,它由 laravel 项目组成。
这是我的 blog1 的 htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteRule ^(.*)$ blog1/public/ [L]
</IfModule>
每次访问 blog1 都很简单,只需https://website.com/login
每次我想访问 blog2 项目时,这个链接看起来像https://website.com/blog2/login
博客2里面的htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ / [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
我怎样才能使链接看起来像https://website.com/blog2/或https://website.com/blog2-sg/或https://website.com/blog2-uk/?
我的预期结果
https://website.com/blog2/ will go to laravel login page
https://website.com/blog2-uk/ will also go to laravel login page
他们将路由到 /var/www/html/blog2/laravel
我能知道这是可行的以及如何实现吗?谢谢。
解决方案
我建议查看 Laravel Routes 子域路由示例:
https ://laravel.com/docs/6.x/routing#route-group-sub-domain-routing 。
这演示了如何在 URI 中使用可变/动态部分。
将所有/blog2-*/
URI 指向 Laravel 应用程序,让 Laravel 做进一步的路由。我不知道您的确切情况,但也许以下重定向规则可以帮助您:
RewriteRule ^blog2-(.*)/ http://www.website.com/blog2 [R=301,L]
推荐阅读
- java - 为什么 JMHSample_12_Forking fork0 比 fork1 胖?
- python - 如何在odoo加载时调用函数
- python - 用于从 Outlook 收集数据的 Python 脚本
- javascript - Cakephp 3.6.14:如果选择输入有值,则启用按钮
- python - 使用装饰器针对类属性注册数据
- symfony4 - Symfony 4. 自定义服务的参数
- android - Android 操作系统更新会干扰 Flutter 应用吗
- jquery - 使用 jquery 创建文件或进行 ajax 调用
- python - 确定物体及其反射之间的距离
- android-layout - Android studio 3.3 Go to Declaration 不起作用