【问题标题】:Laravel reroute subfolder .htaccessLaravel 重新路由子文件夹 .htaccess
【发布时间】:2016-05-16 10:44:29
【问题描述】:

我需要将 Laravel 项目部署到域子文件夹。我已经将文件放在正确的位置,即与public_html文件夹处于同一级别的项目文件夹,并且我已将公用文件夹的内容复制到public_html(好吧,我创建了一个symlink说实话)。

我只有一个问题:

如果我去my-domain.com/proj-name,我可以毫无问题地看到主页。
但是当我转到项目页面my-domain.com/proj-name/about(例如)时,我得到一个404 Not Found: The requested URL /proj-name/about was not found on this server.

我认为解决方案是在 .htaccess 上编辑 RewriteRule,这样当我浏览到 my-domain.com/proj-name/about 时,它会删除 proj-name,就好像它正在尝试访问 my-domain.com/about

我该怎么做?

这是我当前的.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 ^(.*)/$ /$1 [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>

【问题讨论】:

    标签: php apache .htaccess laravel


    【解决方案1】:

    您应该执行以下操作:

    RewriteCond %{REQUEST_URI} !^/proj-name/
    RewriteRule ^(.*)$ proj-name/$1 [L]
    

    注意:以上内容应放在位于public_html而不是public_html/proj_name.htaccess

    【讨论】:

    • 我在public_html 创建了.htaccess,但它仍然无法正常工作。在public_html 中,除了这2 行.htaccess 之外,我还有一个名为proj_name 的符号链接,它指向Laravel 项目public 文件夹。
    • 您的符号链接是正确的。你把public里面的.htaccess改成原来的状态了吗?
    • public 文件夹中的 .htaccess 是我在我的问题中发布的那个(在 Laravel 5.2 项目创建时生成的那个)。
    • @user2094178 请通过说明应该编辑哪个文件的哪些行来改进答案。现在很难理解在哪里改变什么。 :S
    猜你喜欢
    • 2015-05-14
    • 2021-11-19
    • 2017-06-20
    • 2015-10-19
    • 1970-01-01
    • 2015-08-15
    • 2013-09-21
    • 2018-12-13
    • 2018-03-13
    相关资源
    最近更新 更多