Обнаружение, использует ли Apache mod_rewrite - PullRequest
2 голосов
/ 01 февраля 2011

Как клиент может определить, использует ли сервер mod_rewrite?Теперь я знаю, что некоторые правила mod_rewrite не очень очевидны.Но некоторые из них, такие как "SEO Friendly Urls".Какие типы поведения невозможны, если на сервере не запущен mod_rewrite?

1 Ответ

4 голосов
/ 01 февраля 2011

Какие типы поведения невозможны, если на сервере не запущен mod_rewrite?

Реальный ответ - «нет».Теоретически, любой URL может быть сформирован из реальных файлов или каталогов, включая классические «SEO-дружественные» URL.

Существует только косвенные доказательства:

  • Лучшее указание, которое я могу придумать, - это когда вся структура сайта состоит из URL-адресов без .htm .php .html расширений файла:

    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, используемой на сайте.Wordpress с включенным mod_rewrite покажет другую структуру URL, чем с выключенным.То же самое верно для большинства других CMS.Но, конечно, это также весьма несовершенный подход.

  • Использование ресурсов HTML с окончанием .html / .htm / .php будет немного противиспользование mod_rewrite, но вы никогда не можете быть в этом уверены.

  • Использование переменной PATHINFO (также известной как mod_rewrite для бедного человека) несколько сильно указывало бы на использование mod_rewrite:

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

В заключение, mod_rewrite (как и большинство инструментов перезаписи URL) должен быть модулем, прозрачным для внешнего мира.Я не знаю ни одного безошибочного способа обнаружить его снаружи, и вполне может быть, что нет.

...