настройка дружественного URL для поисковой системы (mod_rewrite) - PullRequest
0 голосов
/ 23 июля 2010

Я хочу понять хотя бы немного о том, как работает .htaccess.я использую .htaccess от Zend Framework (так как это то, что я часто использую)

SetEnv APPLICATION_ENV development

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

1-я строка, чтобы установить переменную окружения, хорошо, простой enuf, но что делают последующие строки?для чего -s -l [NC,L] и т. д.из документов Apache я могу видеть, что

  • -s - относится к «обычному файлу с размером».просто любопытно, есть ли нестандартный файл?
  • -l - относится к символической ссылке - что
  • -d - относится к директории
  • REQUEST_FILENAME - полный путь локальной файловой системы к файлу или сценарию, соответствующему запросу
  • REQUEST_URI - ресурс, запрошенный в строке HTTP-запроса.

при условии, что я просмотрел "http://localhost/some/path/here",чему будет равняться REQUEST_FILENAME & REQUEST_URI?

В любом случае, я интерпретирую правила в настоящее время как

  • , если запрос для файла с размером ИЛИ
  • , если запрос для ссылки ИЛИ
  • если запрос на каталог
  • ... сделать что-то ...
  • что делает RewriteRule ^.*$ - [NC,L]?
  • тогда я думаю, что все, что соответствует правилам, указанным выше, перенаправляется на index.php

1 Ответ

0 голосов
/ 23 июля 2010

Если URL-адрес указывает на реальный файл / dir / ссылку, укажите URL-адрес как есть (первая строка RewriteRule вообще не меняет URL-адрес).Иначе, перенаправить на index.php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...