网站停止工作-坏标志分隔符错误

网站停止工作-坏标志分隔符错误

我有一个运行了一年的网站。我更改了域名,托管公司将所有数据复制到了新的托管帐户。该网站运行了几天。现在,无需进行任何更改,我有一个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 服务器错误。

说实话,我不知道用它做什么,托管公司似乎也不知道。

答案1

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]都会被忽略。

相关内容