【问题标题】:Detecting if Apache is using mod_rewrite检测 Apache 是否正在使用 mod_rewrite
【发布时间】:2011-06-19 11:30:07
【问题描述】:

客户端如何检测服务器是否正在使用 mod_rewrite?现在我知道有些 mod_rewrite 规则不是很明显。但有些是,例如“SEO 友好网址”。除非服务器正在运行 mod_rewrite,否则哪些类型的行为是不可能的?

【问题讨论】:

  • 没有什么行为是完全不可能的,但有些模式在没有 mod_rewrite 的情况下极少发生。
  • 请注意,网络服务器软件不止一种。
  • @Gumbo♦ 没错,但绝大多数在线 Web 服务器都是 Apache。如果你知道一些奇怪的 HTTPD 的另一种方法,我会给你一个 +1。

标签: apache mod-rewrite seo


【解决方案1】:

除非服务器正在运行 mod_rewrite,否则哪些类型的行为是不可能的?

真正的答案是“没有”。理论上,任何 URL 都可以由实际的文件或目录构成,包括经典的“SEO 友好”URL。

只有间接证据:

  • 我能想到的最好的迹象是当整个网站结构由没有.htm .php .html 文件扩展名的 URL 组成时:

    http://domain.com/slugs/house-warming-party
    

    要排除该 URL 是目录的可能性,请请求

    http://domain.com/slugs/house-warming-party/index.htm
    http://domain.com/slugs/house-warming-party/index.html
    http://domain.com/slugs/house-warming-party/index.php
    http://domain.com/slugs/house-warming-party/index.asp
    ... whatever other extensions there are .....
    

    如果这些请求都失败,则该站点很可能正在使用 mod_rewrite。但是,如果他们成功了,正如@Gumbo 所说,它也可能是修复请求的MultiViews 选项。无论哪种方式,这无处是安全的!

  • 根据您的用例,您还可以尝试从网站上使用的 CMS 中扣除一些内容。打开 mod_rewrite 的 Wordpress 将显示与关闭时不同的 URL 结构。大多数其他 CMS 也是如此。但当然,这也是一种非常不完善的方法。

  • 使用 .html/.htm/.php 结尾的 HTML 资源会略微反对使用 mod_rewrite,但您永远无法确定。

  • 使用 PATHINFO 变量(也称为穷人的 mod_rewrite)会强烈反对使用 mod_rewrite:

    http://example.com/index.php/slugs/house-warming-party 
    

总之,mod_rewrite(像大多数 URL 重写工具一样)应该是一个对外透明的模块。我知道没有可靠的方法可以从外部检测到它,而且很可能没有。

【讨论】:

  • MultiViews 允许相同的行为。
猜你喜欢
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 2018-11-21
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多