【问题标题】:How to route domain subfolder with dynamic path name?如何使用动态路径名路由域子文件夹?
【发布时间】:2019-11-11 13:09:32
【问题描述】:

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

在 blog2 中的 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 amazon-web-services amazon-ec2 server web-hosting


    【解决方案1】:

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

    【讨论】:

    • 我试过了,但它为我返回 404。我正在使用website.com/blog2-uk,它应该让我返回website.com/blog2-uk/login,但我得到404。
    • 使用上面的重写,website.com/blog-2-uk/ 将您重定向到 website.com/blog2/。您可以通过使用 Laravel Routes 将 / 路由到 /login 或根据您的具体情况更改 RewriteRule 来实现您的评论。
    • 我的 htaccess 中有 RewriteRule ^(.*)$ blog1/public/ [L]。我在下面添加了 RewriteRule ^blog2-(.*)/website.com/blog2 [R=301,L],但不起作用。它显示错误 404。
    • 我猜它把它当作来自 blog1 的路由,因此无法到达 blog2 应用程序。
    猜你喜欢
    • 2017-10-28
    • 2011-02-01
    • 2021-08-29
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    相关资源
    最近更新 更多