Обновление файла htaccess с новым содержимым приводит к ошибкам

#apache #.htaccess

#apache #.htaccess

Вопрос:

Мне нужно внести определенную конфигурацию в мой apache, чтобы использовать определенный пакет npm https://github.com/tlaverdure/laravel-echo-server через cpanel. Поэтому мне было интересно, можно ли безопасно добавить следующий код в существующий .htacess файл.

 RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
RewriteCond %{QUERY_STRING} transport=websocket    [NC]
RewriteRule /(.*)           ws://localhost:6001/$1 [P,L]

ProxyPass        /socket.io http://localhost:6001/socket.io
ProxyPassReverse /socket.io http://localhost:6001/socket.io 
 

Вот содержимое .htaccess файла:

 RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (. )/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php74” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php74 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit
 

Редактировать:

У меня нет root-доступа, чтобы разместить его на моем /etc/httpd/conf/httpd.conf виртуальном хостинге.

Комментарии:

1. Если у вас есть доступ к фактической конфигурации хоста, то зачем вам использовать распределенный файл конфигурации («.htaccess»)? У них есть явные недостатки…

2. Спасибо за ответ. Не могли бы вы объяснить мне недостатки @arkascha

3. Распределенные файлы конфигурации предлагаются только в качестве последнего средства для тех, у кого нет доступа к фактической конфигурации хоста. Они усложняют работу, как известно, подвержены ошибкам, их трудно отлаживать и, что самое главное, они действительно замедляют работу http-сервера…

4. Хорошо, спасибо @arkascha Я работаю на общем хостинге и после консультации с моим хостом. Они не могут помочь мне внести такие изменения. Поскольку это так, есть ли еще способ сделать это безопасно?

5. Я думал, что сделал, но нет. У меня есть доступ по SSH, но нет доступа к root.

Ответ №1:

Я смог решить свою проблему, поместив это в свой .htaccess

 RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www.)?sub.domain.com
RewriteRule ^socket.io/? http://localhost:6001/socket.io [R=301,L]
 

Комментарии:

1. Очень хорошо, что вы поделились с нами тем, что решает вашу проблему, продолжайте в том же духе (изучение и совместное использование). Просто дополнительное примечание, которое вы могли бы изменить (необязательно и может помочь вам в будущем) (www.)?sub.domain.com на ^(?:www.)sub.domain.com too, где ?: относится группа, не захватывающая.