#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, где?:
относится группа, не захватывающая.