当前位置: 首页 > 知识库问答 >
问题:

使用htaccess在子目录中安装Laravel 5应用程序

谯皓君
2023-03-14

我试图在我的服务器上的这个目录中安装laravel 5应用程序:

public_html/myapp/

我希望通过以下URL访问:

http://www.example.com/myapp/

我创建了此.htaccess规则并将其放置在myapp文件夹中,以便重定向请求

RewriteEngine on
RewriteRule ^(.*)$ public/$1 [L]

在我的浏览器中,当我尝试访问应用程序时,会收到重定向的URL,如:

  • http://www.example.com/myapp/public/index.php

而不是漂亮的URL,比如:

  • http://www.example.com/myapp/
  • http://www.example.com/myapp/dashboard

我需要在.htaccess文件中更改什么才能使正确的URL正常工作?

更新:laravel应用程序可以移动到其他地方,如果需要,只要所需的URL结构上面(与应用程序在example.com/myapp/访问)可以实现。

更新:当我尝试访问example.com/myapp/dashboard时,我在浏览器中收到以下错误消息:NotFoundHttpException in compiled.php第7793行:带有以开头的堆栈跟踪:

in compiled.php line 7793
at RouteCollection->match(object(Request)) in compiled.php line 7066
at Router->findRoute(object(Request)) in compiled.php line 7038
at Router->dispatchToRoute(object(Request)) in compiled.php line 7030
at Router->dispatch(object(Request)) in compiled.php line 1989
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))

更新:以下.htaccess文件位于公用文件夹中:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

</IfModule>

共有3个答案

管梓
2023-03-14

我也遇到了同样的问题,但是通过RewriteBase参数可以解决它。

这是我的. htaccess:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    RewriteBase /my_app/

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
彭令秋
2023-03-14

您可以通过在myapp文件夹中添加额外的. htaccess文件轻松实现这一点(这将重定向您在myapp文件夹中的所有请求到Public,因为它应该):

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

您还应该修改myapp/public目录中的.htaccess,如下所示:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On    
    RewriteBase /myapp/

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . index.php [L]
</IfModule>

这里的变化是你重写了基本路径重写 /myapp/

傅胡媚
2023-03-14

你能做的是使用符号链接。

>

  • 将您的laravel应用程序放在其他地方(公共html文件夹之外)
  • 在public_html文件夹中创建应用程序公用文件夹的符号链接

    CD /path/to/your/public_html

    sudo ln-s /path/to/your/laravel_app/publicmyapp

    你可以在这里阅读更多关于符号链接的信息。

  •  类似资料:
    • 我是WebSphere的新手。已经安装了带有单个配置文件的WebSphere8.5服务器。并且安装并启用了JDK7(因为WebSphere8.5默认附带JDK6)。最后,安装了应用程序。但是已安装的应用程序在“已安装的应用程序”目录中没有得到更新。 但是,应用程序安装在C:\websphere85\appserver\profiles\appsrv01中 不知道它在哪里覆盖了这条路径。请帮帮忙。提

    • 问题内容: 我正在建立一个允许人们上传文件,html页面等的网站…现在我遇到了问题。我有这样的目录结构: 现在,我想禁用PHP,但是要在/ USERS的目录和子目录中启用服务器端包含 可以做到这一点(以及如何:))?提前致谢。 顺便说一句,我使用WAMP服务器 问题答案: 尝试禁用.htaccess文件中的选项:

    • 我想禁用对目录的访问,但不想使用.htaccess禁用子目录 我已经写了一个重写规则重定向一切到一个子目录(public_html),但它的父仍然是可访问的,如果用户知道网址,我想禁用当前目录的访问,而不是子目录

    • 我使用jpack打包了我的java应用程序。当我使用打包的安装程序安装它时,安装后的目录始终是

    • 我无法显示android中已安装应用的play store类别。 最终意图maintent=新意图(Intent.ACTION_MAIN,空);主旨。addCategory(意图。CATEGORY_启动器);最终列表pkgAppsList=上下文。getPackageManager()。查询活动(mainIntent,0);

    • 我有一个子目录()我想访问的是在我的站点的根文件夹。我看了这里: https://wordpress.stackexchange.com/questions/20152/cannot-access-non-wordpress-subdirectories-as-wordpress-overrides-them-with-a-40 我已经尝试了解决方案,但没有任何效果。 我还尝试将一个单独的文件添加