У меня есть это в моем файле * .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 директива.