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

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

В журнале ошибок указано:

/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.

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

]
0
задан 28 December 2018 в 13:37
1 ответ
 RewriteRule ^ (/)? $ Cmsfolder / index.php [L] Параметры + индексы
 

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

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

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

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

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


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

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

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

2
ответ дан 4 December 2019 в 13:22

Теги

Похожие вопросы