Назад | Перейти на главную страницу

Несколько RewriteCond, как будет работать этот код?

У меня есть это в моем файле * .conf (я получил это от кого-то, не уверен, есть ли ошибка или нет), что я не совсем понимаю:

  RewriteEngine on
  RewriteBase /
  RewriteCond %{HTTP_HOST} mycompany.com
  RewriteRule ^$  http://mycompany.com/login   [L]
  # we check if the .html version is here (caching)
   RewriteRule ^$ index.html [QSA]
   RewriteRule ^([^.]+)$ $1.html [QSA]
   RewriteCond %{REQUEST_FILENAME} !-f

   # no, so we redirect to our front web controller
   RewriteRule ^(.*)$ index.php [QSA,L]

Я примерно понимаю, что он делает; сначала он проверяет, является ли входящий запрос mycompany.com, если да, то перенаправляет на http://mycompany.com/login.

Тогда какое следующее условие нужно проверить? Тот факт, что есть это

RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]

приходите перед RewriteRule ^$ http://mycompany.com/login [L] сбивает меня с толку.

Есть ли способ переписать приведенный выше сценарий в RewriteCond, RewriteRule, RewriteCond, RewriteRule формат?

У вас неоднозначный отступ в файле конфигурации.

Возможно, следующее немного яснее:

RewriteEngine on
RewriteBase /

# If the requested hostname is mycompany
# and no path segment was given,
# redirect to /login
RewriteCond %{HTTP_HOST} mycompany.com
RewriteRule ^$  http://mycompany.com/login   [L]

# Add .html extension to any requested filename.
RewriteRule ^([^.]+)$ $1.html [QSA]

# Check if requested filename (now with .html
# extension) exists,
# otherwise redirect to front controller
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule ^(.*)$ index.php [QSA,L]

Я удалил

RewriteRule ^$ index.html [QSA]

потому что это легче сделать с DirectoryIndex директива.