【问题标题】:How to add/ignore a subfolder in htaccess file?如何在 htaccess 文件中添加/忽略子文件夹?
【发布时间】:2019-05-19 12:51:44
【问题描述】:

我已经在http://url/sdf19/ 构建了一个应用程序

我在 /sdf19/ 中放置了一个 .htaccess,其中包含用于干净 url 的 RewriteRule。

但是我已经构建了一个 PDF 生成工具,它位于子文件夹 /inc/tools 中。 我需要直接链接到它以在标题之前运行。

尽管进行了几个小时的搜索、尝试 sn-ps、生成器等。如果没有现有的 RewriteRule 集接管,我无法获得对 http://url/sdf19/inc/tools 的任何请求

这是我的起始文件

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-z]+)\/?$ index.php?page=$1 [NC]
RewriteRule ^([a-z]+)\/([0-9]+)\/?$ index.php?page=$1&id=$2 [NC]
RewriteRule ^([a-z]+)\/([a-z]+)\/?$ index.php?page=$1&action=$2 [NC]
RewriteRule ^([a-z]+)\/([a-z]+)\/([0-9]+)\/?$ index.php?page=$1&action=$2&id=$3 [NC]

我尝试在第 4 行添加此内容; RewriteCond %{REQUEST_URI} !^ inc/tools/ [NC] 这给了 RewriteCond: bad argument line 错误

我已尝试将此添加到第 2 行;

RewriteCond %{REQUEST_URI} ^/inc/tools/(.*)$
RewriteRule ^.*$ - [L]

期望的结果是我可以允许直接访问http://url/sdf19/inc/tools > 到目前为止我尝试过的所有内容都被重定向到基础http://url/sdf19/

【问题讨论】:

  • 尝试在 .htaccess 文件的开头添加此规则:RewriteRule ^(inc)($|/) - [L]
  • @Hackerman 不走运,恐怕。直接把我吐回/sdf19。在控制台的网络日志中,我可以看到浏览器在重定向前一瞬间以 302 状态访问了 /inc/tools/pdf.php
  • 谢谢@Emma——现在已经在那边做了,再一次,大多数sn-ps和答案都提供了我似乎已经尝试过的东西,所以我希望在展示我的特殊.htaccess时,有人可以保存我从精神错乱中
  • ServerFault 上的跨站发帖:serverfault.com/questions/967977/…

标签: apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

也许,我们可以逐步解决这个问题。第一步,我们可能只是想让一些东西在尽可能少的边界下工作。

让我们设计一个low boundary expression,可能类似于:

(.+)(\/inc\/tools)

从这里,我们可以将\/inc\/tools 添加到RewriteCond,只是为了测试。稍后,我们可以修改它。


正则表达式

如果这不是您想要的表达式,您可以在regex101.com 中修改/更改您的表达式。

正则表达式电路

您还可以在jex.im 中可视化您的表达式:

重写规则测试

您可以在 htaccess.madewithlove.be 中测试您的 RewriteRules。

我不太确定 RewriteRules 的其余部分,但我假设它们工作正常并且不会与新规则冲突。也许,这个或类似的东西会起作用:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI} \/inc\/tools  [NC]
    RewriteRule ^(.*)$ $1 [L]


    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^([a-z]+)\/?$ index.php?page=$1 [NC]
    RewriteRule ^([a-z]+)\/([0-9]+)\/?$ index.php?page=$1&id=$2 [NC]
    RewriteRule ^([a-z]+)\/([a-z]+)\/?$ index.php?page=$1&action=$2 [NC]
    RewriteRule ^([a-z]+)\/([a-z]+)\/([0-9]+)\/?$ index.php?page=$1&action=$2&id=$3 [NC]

</IfModule>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多