如何使用 .htaccess 指向目录以加载索引

Posted

技术标签:

【中文标题】如何使用 .htaccess 指向目录以加载索引【英文标题】:How to point directory to load index with .htaccess 【发布时间】:2016-03-23 15:25:30 【问题描述】:

我正在尝试为我的网站配置.htaccess

我的网站中有两个文件夹 1 - app , 2 - public

我想从公共文件夹加载index.php 并限制所有对应用程序文件夹的直接访问

我正在使用的.htaccess 返回结果403 Forbidden,但是如果我将index.php 移动到根目录中它正在工作,我只想指出index.phppublic 目录中并将所有请求发送到那里.

Options -Indexes

<IfModule mod_rewrite.c>

    RewriteEngine On
    RewriteBase /public/

    # Force to exclude the trailing slash
    RewriteCond %REQUEST_FILENAME !-d
    RewriteCond %REQUEST_URI (.*)/$
    RewriteRule ^(.+)/$ $1 [R=307,L]

    # Restrict php files direct access
    RewriteCond %THE_REQUEST ^.+?\ [^?]+\.php[?\ ]
    RewriteRule \.php$ - [F]

    # Allow any files or directories that exist to be displayed directly
    RewriteCond %REQUEST_FILENAME !-f
    RewriteCond %REQUEST_FILENAME !-d

    RewriteRule ^(.*)$ index.php?$1 [QSA,L]

</IfModule>

【问题讨论】:

你能发布你的目录结构吗? 在应用程序文件夹中我有核心端,而在公共端我有索引和资源,我设法避免这样。在根目录中我为公共目录制定了重写规则,在公共目录中我粘贴了这个 htaccess 并删除了重写基础,它起作用了 【参考方案1】:

好吧,我这样解决了这个问题, 对于root 目录我管理.htaccess 就像给出的代码一样,想法是将所有调用重定向到public 目录。

Options -Indexes
<IfModule mod_rewrite.c>
    RewriteEngine on

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

对于过滤请求,我曾经将第二个 .htaccess 放在 public 目录

Options -Indexes

<IfModule mod_rewrite.c>

    RewriteEngine On
    RewriteBase /

    # Force to exclude the trailing slash
    RewriteCond %REQUEST_FILENAME !-d
    RewriteCond %REQUEST_URI (.*)/$
    RewriteRule ^(.+)/$ $1 [R=307,L]

    # Restrict php files direct access
    RewriteCond %THE_REQUEST ^.+?\ [^?]+\.php[?\ ]
    RewriteRule \.php$ - [F]

    # Allow any files or directories that exist to be displayed directly
    RewriteCond %REQUEST_FILENAME !-f
    RewriteCond %REQUEST_FILENAME !-d

    RewriteRule ^(.*)$ index.php?$1 [QSA,L]

</IfModule>

【讨论】:

以上是关于如何使用 .htaccess 指向目录以加载索引的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 重写语言子域

.htaccess 拒绝所有-> 目录索引不起作用(拒绝所有和白名单文件)

使用 .htaccess 将所有子域和子目录重定向到索引页面

.htaccess,将根目录指向子目录

配置 htaccess 以直接访问 CSS 和 JS 文件,但将所有其他请求重定向到索引文件 [重复]

通过htaccess文件配置多个一级域名指向根目录的子文件夹