【问题标题】:Match all files (folders and subfolders) expect the files in specific folder [closed]匹配所有文件(文件夹和子文件夹)期望特定文件夹中的文件[关闭]
【发布时间】:2023-08-18 22:44:02
【问题描述】:

我已经搜索并试图找出这个问题好几个星期了,但没有结果:(我不擅长正则表达式。

我需要一个 .htaccess 正则表达式匹配,它将匹配所有文件、文件夹,并在 htaccess 中将它们重写到 /mimox.com/ 文件夹

所以我在服务器上得到的文件和文件夹是:

http://limiagrade.com/mimox.com/index.php
http://limiagrade.com/mimox.com/css/style.css
http://limiagrade.com/mimox.com/img/bg.jpg
http://limiagrade.com/mimox.com/img/header.jpg
http://limiagrade.com/mimox.com/faq.php
http://limiagrade.com/mimox.com/

我想让我的 htaccess 在 URL 中没有 mimox.com 的情况下访问我的文件。

所以当我访问时,例如:

http://limiagrade.com/faq.php

它应该使用 htaccess 重写为:

http://limiagrade.com/mimox.com/faq.php

我尝试了很多东西,但它们总是陷入无限循环..:/

【问题讨论】:

  • 您可能只需要在规则前添加一个RewriteCond %{REQUEST_FILENAME} !-f,这意味着如果请求的文件不存在,请继续执行该规则。
  • 或者检查请求的文件路径中是否没有mimox.com的条件。
  • 能否请你写下重写所有文件的代码,除了那些包含 mimox.com/ 的文件
  • 找到解决方案:RewriteEngine On RewriteCond %{HTTP_HOST} limiagrade\.com [NC] RewriteRule ^((?!.*(mimox.com)).*)$ mimox.com/$1
  • 哇 O_o 不擅长正则表达式并在发布问题后 15 分钟内在解决方案中使用负面展望? O_o

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

在您的 DOCUMENT_ROOT/.htaccess 文件中尝试此代码:

RewriteEngine On

RewriteRule !^mimox.com /mimox.com%{REQUEST_URI} [L,NC]

【讨论】: