首页 > 解决方案 > .htaccess :在 URL 中包含一个子目录(仅适用于某些文件)

问题描述

我正在尝试编写一个看似简单的RewriteCond,但是,我一直在追逐我的尾巴试图找到解决方案。除了这个类似的查询和这个类似的查询之外,我已经搜索了文档(这里这里),但无法解决这个问题。

文件夹结构

/config
/public
  /js
  /css
  index.php
/src
  /controllers
    /ajax
  /models
  /views

目标

如果 URL 太 www.example.com,或任何 .js、.css、.jng 文件,请在 URL 中包含“public”。

wwww.example.com -> www.example.com/public/index.php
www.example.com/js/main.js -> www.example.com/public/js/main.js

但是,我希望编写一个RewriteCond免除任何其他 URL 请求的代码。

wwww.example.com/src/controllers/ajax/doSomething.php -> NO CHANGE

标签: regexapache.htaccessmod-rewrite

解决方案


试试这个:

RewriteRule ^$ /public/index.php [L,R]

RewriteCond %{REQUEST_URI}  \.js$ [OR]
RewriteCond %{REQUEST_URI}  \.css$ [OR]
RewriteCond %{REQUEST_URI}  \.jng$ 
RewriteCond %{REQUEST_URI}  !^/public
RewriteRule ^ /public%{REQUEST_URI} [L,R]

推荐阅读