AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

    • 主页
    • 系统&网络
    • Ubuntu
    • Unix
    • DBA
    • Computer
    • Coding
    • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 914825
Accepted
MB34
MB34
Asked: 2018-06-02 12:13:37 +0800 CST2018-06-02 12:13:37 +0800 CST 2018-06-02 12:13:37 +0800 CST

.htaccess 中的允许目录

  • 772

我在我的文件夹 API 中安装了这个 .htaccess 文件。它用于将所有请求重定向到 api.php 脚本。

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(.*)$ api.php?rquest=$1 [QSA,NC,L]

    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^(.*)$ api.php [QSA,NC,L]

    RewriteCond %{REQUEST_FILENAME} -s
    RewriteRule ^(.*)$ api.php [QSA,NC,L]   
</IfModule>  

现在,我为我的 API 添加了一些 Swagger 文档,并且需要能够使用以下 URL 访问它localhost/API/Swagger/ui:当我尝试访问该 URL 时,我不断收到 404。

目前使用 WAMP 进行设置,但在我测试完所有内容后将立即部署到生产服务器。我可以很好地访问这样的 API 函数:localhost/API/GetMakes?year=2010

关于做什么的任何想法?

.htaccess
  • 1 1 个回答
  • 925 Views

1 个回答

  • Voted
  1. Best Answer
    MrWhite
    2018-06-02T13:01:13+08:002018-06-02T13:01:13+08:00

    防止 URL 路由到您的 API 的一种方法(我假设这是触发 404 而不是 Swagger 文档的“错误”?)是简单地在文件中包含一个异常/API/.htaccess以防止此特定 URL 被馈送到你的api.php文件。

    例如:

    RewriteEngine On
    
    # Do not send the following URL(s) to "api.php"
    RewriteRule ^Swagger/ui - [L]
    
    # YOUR CURRENT API RULES CONTINUE HERE...
    

    因此,如果请求的 URL以 then开头, /API/Swagger/ui则处理停止并且不会继续通过剩余的 mod_rewrite 指令。

    但是,根据您的“Swagger”URL 的路由方式以及Swagger(and ui) 是否是物理子目录,可能会有更好的方法来执行此操作。

    更新:由于从注释中出现,这/API/Swagger/ui是一个物理目录,那么编辑文件的上述替代方法是简单地在or子目录中/API/.htaccess创建一个附加.htaccess文件并启用重写引擎。例如:/Swagger/Swagger/ui

    RewriteEngine On
    

    mod_rewrite 默认情况下不被继承,因此这应该具有完全覆盖与您的 API 关联的父指令的效果。这避免了您必须编辑 API.htaccess文件。


    旁白:您当前的指令看起来确实有点奇怪。您首先将所有未映射到物理目录或文件(大小)的请求路由到您的 API 脚本。但是,您继续将所有请求路由到您的 API 脚本吗?

    更新:我知道为什么会收到 404。API 中的代码会检查名为rquest. 如果它不存在,它会以 404 响应

    这只会进一步支持我上面的评论。您文件中的第二条和第三条规则.htaccess不包含rquestURL 参数 - 所以这些似乎只会导致 404?这些指令还会阻止您的“Swagger”URL 工作。

    浏览了您链接到的教程后,您的.htaccess文件中的第二条和第三条规则似乎应该被简单地删除,因为它们似乎没有任何实际用途(除了触发 404)?这也将解决您访问“Swagger”文档的初始问题,并且避免包含任何“例外”或其他指令。换句话说,将您的/API/.htaccess文件减少到以下内容也应该“有效”:

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(.*)$ api.php?rquest=$1 [QSA,L]
    

    但是,如我的答案顶部所述,保持“异常”仍然是最佳的,因为它可以防止在访问“swagger”文档时进行不必要的文件系统检查。

    • 1

相关问题

  • apache重写以将文件夹分配给域

  • Apache conf 或 .htaccess 规则将 404 重定向到特定文件类型的另一个位置

  • 如何让 Apache2 重定向到子目录

  • .htaccess - 删除所有 cookie

  • 我的 .htaccess 文件是什么意思?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助
subwaysurfers
my femboy roommate

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve