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

Сайт перестал работать - ошибка неверных разделителей флагов

У меня есть сайт, который проработал год. Я изменил доменное имя, и хостинговая компания скопировала все данные в новую учетную запись хостинга. Сайт проработал несколько дней. Теперь, без изменений, у меня есть 500 Internal Server Error.

Журнал ошибок говорит:

/home/website/public_html/.htaccess: RewriteRule: недопустимые разделители флагов

В .htaccess файл в public_html в папке говорится:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?website.com$
RewriteCond %{REQUEST_URI} !^/cmsfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /cmsfolder/$1
RewriteCond %{HTTP_HOST} ^(www.)?website.com$
RewriteRule ^(/)?$ cmsfolder/index.php [L]Options +Indexes
Options +Indexes
IndexOptions -FancyIndexing

Я ничего не менял, поэтому не уверен, почему веб-сайт просто переключился на ошибку сервера 500.

Честно говоря, я понятия не имею, что я с этим делаю, и хостинговая компания, похоже, тоже не знает.

RewriteRule ^(/)?$ cmsfolder/index.php [L]Options +Indexes

Это приведет к ошибке «RewriteRule: плохие разделители флагов», поскольку [L]Options не действительный флаги аргумент. Это две объединенные директивы. Options +Indexes - это совершенно отдельная директива, которая у вас уже есть в следующей строке, поэтому ее просто нужно удалить:

RewriteRule ^(/)?$ cmsfolder/index.php [L]

Это то, что хостинговая компания сделала на днях, хотя она работает с тех пор, как они это сделали.

Точно так, как написано, это сразу бы сломалось - значит, должно быть что-то изменилось.

Если файл не редактировался явно, тогда мой угадать это то .htaccess файл был повторно загружен, а окончания строк были неправильно преобразованы программой FTP (возможно, при редактировании файла было несколько разных окончаний строк)?


Просто к вашему сведению (в случае, если директива была написана именно так), следующие (с пространство между [L] и Options) бы не привели к такой ошибке:

RewriteRule ^(/)?$ cmsfolder/index.php [L] Options +Indexes

Так как пробелы являются разделителями в файлах конфигурации Apache и всем, что находится после последнего аргумента, т.е. [L] просто игнорируется.