Статьи

mod_rewrite: руководство для начинающих по перезаписи URL

условия

Но это не все! Хотя RewriteRule

Формат условий прост:

 RewriteCond Something_to_test Condition

Любое условие RewriteCondRewriteRuleRewriteCondRewriteRule

Это работает так: mod_rewrite берет все RewriteRulesRewriteRule Если существует шаблон RewriteRuleRewriteRule Если это произойдет, произойдет правильная замена, но если нет, mod_rewrite ищет оставшиеся условия. Когда больше нет условий, проверяется последующий RewriteRule

Таким образом, вы можете настроить перезапись URL-адресов, используя условия, основанные практически на всем, что известно во время передачи HTTP в Apache — и многое другое! В основном вы можете использовать все эти переменные в строке Something_to_test

  • Переменные заголовка HTTP:
    HTTP_USER_AGENT, HTTP_REFERER,

    HTTP_COOKIE, HTTP_FORWARDED, HTTP_HOST, HTTP_PROXY_CONNECTION,

    HTTP_ACCEPT

  • Переменные подключения и запроса: REMOTE_ADDR, REMOTE_HOST, REMOTE_USER, REMOTE_IDENT, REQUEST_METHOD, SCRIPT_FILENAME, PATH_INFO, QUERY_STRING, AUTH_TYPE
  • Внутренние переменные сервера: DOCUMENT_ROOT, SERVER_ADMIN, SERVER_NAME, SERVER_ADDR, SERVER_PORT, SERVER_PROTOCOL, SERVER_SOFTWARE
  • Системные переменные: TIME_YEAR, TIME_MON, TIME_DAY, TIME_HOUR, TIME_MIN, TIME_SEC, TIME_WDAY, TIME
  • специальные значения mod_rewrite: API_VERSION, THE_REQUEST, REQUEST_URI, REQUEST_FILENAME, IS_SUBREQ

Условие может быть простой строкой или стандартным регулярным выражением с такими дополнениями, как:

  • <, >, =
  • -fSomething_to_test
  • -dSomething_to_test

Как вы можете видеть, этого более чем достаточно для указания условия, подобного этому (взято из руководства mod_rewrite):

   RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*    
  RewriteRule ^/$ /homepage.max.html [L]    

  RewriteCond %{HTTP_USER_AGENT} ^Lynx.*    
  RewriteRule ^/$ /homepage.min.html [L]    

  RewriteRule ^/$ /homepage.std.html [L] 

Когда браузер запрашивает страницу индекса, может произойти 3 вещи:

  • браузер с движком Mozilla, браузер будет обслуживаться homepage.max.html
  • с помощью Lynx (символьный браузер) откроется homepage.min.html
  • если имя браузера не содержит ни «Mozilla», ни «Lynx», будет отправлен стандартный файл homepage.std.html

Вы даже можете запретить пользователям доступ к изображениям вне вашего сервера:

   RewriteCond %{HTTP_REFERER} !^$  
  RewriteCond %{HTTP_REFERER} !^http://localhost/.*$ [OR,NC]  
  RewriteCond %{HTTP_REFERER} !^http://mysite.com/.*$ [OR,NC]  
  RewriteCond %{HTTP_REFERER} !^http://www.mysite.com/.*$ [OR,NC]  
  RewriteRule .*.(gif|GIF|jpg|JPG)$ http://mysite/images/bad.gif [L,R] 

Но, конечно, существуют бесконечные возможности, включая условия, зависящие от IP или времени, и т. Д.

Перейти на страницу: 1 | 2 | 3 | 4