【问题标题】:How to redirect all request to subfolder with it's own .htaccess file如何使用自己的 .htaccess 文件将所有请求重定向到子文件夹
【发布时间】:2015-07-22 18:04:07
【问题描述】:

我知道这样的问题已经得到了很多时间的回答,但找到的答案都对我不起作用。
我有以下 url http://dummy.com/api 来访问我的根文件夹,我将在其中拥有我的项目(Laravel 项目)。
我正在部署到远程主机,所以我无法访问父目录。
我的项目(简单的 Laravel 项目)由很多文件夹组成,顺便说一下,这些文件夹应放置在 Laravel 项目的主要 index.php 所在的父目录(app,bootstrap,config...)和公用文件夹中。
所以我有这样的网址http://dummy.com/api/public/index.php 该目录包含它自己的.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...
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L

这个东西是laravel需要的。

所以我需要将所有对http://dummy.com/api 的请求都重定向到public/ 子文件夹(默认为index.php)。
例如http://dummy.com/api/users 应该是真正的http://dummy.com/api/pulbic/users
但这对用户来说应该是透明的,而不是更改为真实的 url。
我也从这里尝试了很多不同的配置Common .htaccess Redirects

但这对我不起作用。请帮助创建此类规则以获得所需的结果。
提前谢谢大家。

【问题讨论】:

  • .htaccess 节目是否位于/api/public/ 目录中? /api/ 也有 .htaccess 吗?
  • 我试图在根目录中配置htacces 以获得所需的结果,是的,在 /api/public 内部还有我在上面提供的另一个 htaccess 文件。

标签: php apache .htaccess mod-rewrite redirect


【解决方案1】:

/api/ 文件夹中试试这个.htaccess:

RewriteEngine On
RewriteBase /api/

RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

【讨论】:

  • 太棒了,谢谢!!你是怎么做到的?)我已经看到了很多你对这些问题的回答)再次感谢你!
猜你喜欢
  • 2015-05-30
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
相关资源
最近更新 更多