首页 > 解决方案 > 如何使用动态路径名路由域子文件夹?

问题描述

我有两个项目文件夹,例如 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

我能知道这是可行的以及如何实现吗?谢谢。

标签: laravelamazon-web-servicesamazon-ec2serverweb-hosting

解决方案


我建议查看 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]

推荐阅读