另一个 mod_rewrite - 如何实现预期结果

另一个 mod_rewrite - 如何实现预期结果

如果有人能帮我解决 mod_rewrite 问题,我将不胜感激。我知道 Stack Exchange 上有 64K 个关于这个话题的答案,我的答案可能就在那里,只要我能找到可以组合起来做这件事的答案就行。

这些规则需要完整、准确地实施,不能有无限循环、500 错误或降低服务器安全性的风险。

  1. 没有浏览器重定向 - 因此重写,仅限内部...浏览器栏保持不变

  2. 不存在的 file_names.any_extension 会重定向到 /error/index.php,无论不存在的文件是在 html 根目录还是子目录中。

  3. 以下内容应保持不变并表现出默认行为示例:

    URL/ 
    

    或 URL/?bla-bla 或 URL?bla-bla

    或 URL/an_exist_file.ext

    或 URL/an_exist_file.ext?bla-bla

    或 URL/an_exist_file.ext/?bla-bla

    并且以上所有内容都带有额外的现有路径,例如:

    URL/any_path_that_exists/an_exist_file.ext AND with OR without a query string.
    
  4. 但是以下内容应始终在内部重写为 URL/?path_or_string_that_does_not_exist 并且 $_SERVER[["REQUEST_URI"] 应包含不存在的路径//字符串;示例:

    URL/a_path_that_does_not_exist/
    

    或 URL/a_string_that_is_not_an_existing_path (不带尾部斜杠)

    并且 URL/a_path_that_does_not_exist/a_file_name_that_exists_in_html_root.ext 从 html 根目录进行处理,并将不存在的路径重写为查询字符串。

我希望这些都说清楚了。如果有人能帮我解决这个问题,我将不胜感激。我读了所有关于这个主题的 apache 注释(这让我很头疼),还用谷歌搜索过,查阅了无数的 stack overflow 文章,但还是无法想出一个可以可靠地同时完成上述所有任务的方法。应该很简单,但对我来说却很难。

相关内容