使用 .htaccess 的 Apache 文档根目录

Cur*_*ous 4 php apache .htaccess mod-rewrite

我有一个目录结构

mymvc
    |--App
    |--Core
    |--logs
    |--public
             |--index.php
    |--vendor
    |--.htaccess
Run Code Online (Sandbox Code Playgroud)

我想要的是,如果有人点击我的网址,www.example.com/mymvc/那么所有请求都必须通过public->index.php 使用.htaccess文件。我无权访问 httpd.conf 文件。

|--public
        |--index.php
Run Code Online (Sandbox Code Playgroud)

我希望我的public文件夹只能作为文档根目录访问,并请求通过文件夹内的index.php文件public。没有人可以直接访问AppCorelogs等目录。意味着我希望我的公用文件夹是DOCUMENT ROOT.

Dha*_*era 5

首先,您需要.htaccess在项目的根目录中创建一个文件。

mymvc/.htaccess

RewriteEngine On
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) public/$1 [L]
Run Code Online (Sandbox Code Playgroud)

然后,在目录中的.htaccess文件public(即mymvc/public/.htaccess)中,您需要向RewriteBase现有代码添加一个指令,如下所示:

mymvc/公共/.htaccess

# Remove the question mark from the request but maintain the query string
RewriteEngine On
RewriteBase /mymvc
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)