【问题标题】:Rewrite Rule Redirect Sub Folder重写规则重定向子文件夹
【发布时间】:2018-12-19 21:46:11
【问题描述】:

我不知道如何编写动态重写规则,或者是否有可能。文件将不存在的原始路径,但将作为物理文件存在于新路径中。请求中的第一个、第二个和第三个目录将是静态的,除了可以是任何整数的第二个目录。第三个目录可以是 2 个选项之一,但不影响最终路径。

/test/1/name/folder/test.js /anotherpath/1/folder/test.js

/test/44/name/test.js /anotherpath/44/test.js

/test/55/name/folderagain/txt.txt /anotherpath/55/folderagain/txt.txt

【问题讨论】:

    标签: regex apache .htaccess


    【解决方案1】:

    您的问题在您实际查找的内容中含糊不清。特别是因为您没有发布任何自己的尝试来展示您想要实现的实际内容。

    所以我不得不猜测一下,但我认为这或多或少是您正在寻找的:

    RewriteEngine on
    RewriteRule ^/?test/(\d+)/[^/]+/(.+)$ /anotherpath/$1/$2 [END]
    

    如果启用了,该规则同样适用于 http 服务器的主机配置或动态配置文件(.htaccess 样式文件)。

    如果您使用该规则收到 http 状态 500(“内部服务器错误”),则可能是您运行的是非常旧版本的 apache http 服务器。在这种情况下,尝试用旧的[L] 标志替换[END] 标志,它在这种情况下应该可以正常工作。在这种情况下,您将在 http 服务器错误日志文件中找到相应的注释。

    一般来说:您应该始终喜欢将此类规则放在 http 服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为的原因,难以调试,而且它们确实减慢了 http 服务器的速度。它们仅在您无法访问真正的 http 服务器主机配置(阅读:非常便宜的服务提供商)或坚持编写自己的规则的应用程序(这是一个明显的安全噩梦)的情况下作为最后一个选项提供。

    【讨论】:

      猜你喜欢
      • 2014-04-03
      • 1970-01-01
      • 2012-11-22
      • 2012-11-20
      • 1970-01-01
      • 2023-03-13
      • 2016-08-16
      • 2012-08-20
      • 2012-02-24
      相关资源
      最近更新 更多