Установка Silverstripe - дружественные URL не работают - PullRequest
0 голосов
/ 17 сентября 2018

Я попытался установить silverstripe 4.2.1 на двух разных серверах и получаю ту же ошибку при установке. В этом году у меня было несколько установок на других клиентских компьютерах, но я впервые столкнулся с этой проблемой.Интересно, если это проблема 4.2.1

Сообщение об ошибке при установке

Дружественные URL не работают.Это наиболее вероятно, потому что модуль перезаписи не настроен правильно на вашем сайте.Вам может потребоваться, чтобы ваш веб-хост или администратор сервера сделал это за вас:

mod_rewrite или другой модуль перезаписи включен на вашем веб-сервере
AllowOverride All установлен для каталога, где установлен SilverStripe

Я поместил некоторый текст мусора в .htaccess в корневой каталог, в public_html и в общую папку silverstripe.Все три вызывают ошибку 500.

Обратите внимание, что я смог посетить site.com, и он был перенаправлен установщику.поэтому я думаю, что mod_rewrite действительно включен.

Когда я захожу на site.com, он выдает версию «Ошибка сервера» для Silverstripe

Мой файл HTAccess, расположенный в общей папке SS:

    ### SILVERSTRIPE START ###
# Deny access to templates (but allow from localhost)
<Files *.ss>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Files>

# Deny access to IIS configuration
<Files web.config>
    Order deny,allow
    Deny from all
</Files>

# Deny access to YAML configuration files which might include sensitive information
<Files ~ "\.ya?ml$">
    Order allow,deny
    Deny from all
</Files>

# Route errors to static pages automatically generated by SilverStripe
ErrorDocument 404 /assets/error-404.html
ErrorDocument 500 /assets/error-500.html

<IfModule mod_rewrite.c>

    # Turn off index.php handling requests to the homepage fixes issue in apache >=2.4
    <IfModule mod_dir.c>
        DirectoryIndex disabled
        DirectorySlash On
    </IfModule>

    SetEnv HTTP_MOD_REWRITE On
    RewriteEngine On
    RewriteBase '/public'

    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]


    # Deny access to potentially sensitive files and folders
    RewriteRule ^vendor(/|$) - [F,L,NC]
    RewriteRule ^\.env - [F,L,NC]
    RewriteRule silverstripe-cache(/|$) - [F,L,NC]
    RewriteRule composer\.(json|lock) - [F,L,NC]
    RewriteRule (error|silverstripe|debug)\.log - [F,L,NC]

    # Process through SilverStripe if no file with the requested name exists.
    # Pass through the original path as a query parameter, and retain the existing parameters.
    # Try finding framework in the vendor folder first
    RewriteCond %{REQUEST_URI} ^(.*)$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* index.php
</IfModule>
### SILVERSTRIPE END ###

И тот, что в public_html

RewriteEngine On
RewriteRule ^(.*)$ public/$1

Я использую PHP7.1 на общем сервере.

1 Ответ

0 голосов
/ 20 сентября 2018

Я хочу опубликовать это здесь на случай, если кто-то столкнется с этой проблемой. Это мучает меня уже 4 дня, и никто, похоже, не знает ответа.

Если вы устанавливаете SS в учетной записи общего хостинга, распаковав исходный код в public_html или composer, вы можете столкнуться с ошибкой при установке.

Невозможно написать дружественные URL-адреса - убедитесь, что mod_rewrite включен и для AllowOveride установлено значение All.

Я знал, что оба из них были на самом деле после разговора с техподдержкой.

При посещении сайта после ошибки при установке я получаю сообщение об ошибке сервера после некоторого тестирования, которое может увидеть, что сайт действительно переписывается в / public, как и предполагалось SS.

Наконец я заметил, что index.php в /public имел разрешения 775. Я изменил его на 644, и все хорошо.

Примечание. Я попытался установить v4.2.1 на двух разных хостинг-провайдерах. BlueHost (имеет доступ по ssh для композитора) и Hostgator (без ssh) Обе дали мне одну и ту же проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...