【问题标题】:Set document root to subdirectory, redirect to index .php将文档根目录设置为子目录,重定向到索引 .php
【发布时间】:2015-11-04 05:24:36
【问题描述】:

这是我的目录结构:

/.htaccess
/public/
/public/.htaccess
/public/index.php
/public/js/main.js
/public/somedir
/public/somedir/.htaccess
/public/somedir/index.html
/public/somedir/js/script.js

基本上,我需要它显示/public 目录是文档根目录,甚至虚拟主机也有/ 作为文档根目录。所以/public/* 不应该出现在 URL 中。

基本上我需要/.htaccess 来重写/public/ 中的现有文件(即我请求/js/main.js 并且它为文件/public/js/main.js 提供服务)或者如果不存在匹配文件则运行/public/index.php

如果文件存在于/public/somedir 中,我需要/public/somedir/.htaccess 来提供文件,还要从URI 的前面删除/public,或者如果uri /somedir/api/* 匹配,则提供/public/index.php,或者提供服务/public/somedir/index.html 如果这两个条件都不成立。

这里是/public/somedir/.htaccess的来源:

RewriteEngine on
Options +SymLinksIfOwnerMatch

RewriteCond %{REQUEST_URI} ^/somedir/api
RewriteRule ^ ../index.php [L]

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^ index.html [L]

这里是/public/.htaccess的来源:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /index.php

这里是/.htaccess的来源:

RewriteEngine On

RewriteRule ^(.*)$ /public/$1

这是 => 表示“请求”=>“服务”的行为:

/ => /public/index.php

/nofile => /public/index.php

/js/main.js => /public/js/main.js

/somedir/js/script.js => /public/somedir/js/script.js

/somedir => /public/somedir/index.html 但是重定向到/public/somedir/ 不好

/somedir/api/test => /public/somedir/index.html 但应该服务于/public/index.php BAD

非常感谢任何见解。

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    您的public/somedir/.htaccess 应该是:

    Options +SymLinksIfOwnerMatch
    RewriteEngine on
    
    RewriteCond %{REQUEST_URI} /somedir/api [NC]
    RewriteRule ^ ../index.php [L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.html [L]
    

    /public/.htaccess:

    DirectorySlash Off
    RewriteEngine on
    
    # add a trailing slash to directories
    RewriteCond %{DOCUMENT_ROOT}/public/$1 -d
    RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=302]
    
    RewriteRule ^(.*)$ /public/$1 [L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      相关资源
      最近更新 更多