apache RewriteRule работает неправильно

<input.txt awk -F: '$2 !~ "hello123"' >output.txt

Установите :в качестве разделителя полей, печатайте все строки, где второй столбец не содержитhello123


Если это будет частью скрипта, может быть полезно передать переменную оболочки в awk вместе с шаблоном поиска:

var='hello123'
awk -F: -v pattern="$var" '$2 !~ pattern' input.txt > output.txt
0
10.07.2020, 17:55
2 ответа

Решение намного проще, чем я думал. Вы просто перенаправляете весь HTTP на HTTPS, а затем обрабатываете фактическую перезаписи на виртуальном хосте 443, благодаря @Hauke ​​Laging, который указал, что фактическое перенаправление должно происходить на виртуальном хосте 443, а также ошибки в RegEx, который я использовал. Эта статья Как заставить https, www и завершающую косую черту с одним перенаправлением также интересна для чтения.

<VirtualHost *:80>
    ServerName domain.local

    DocumentRoot "/var/www/html/"
    
    # html directory contains gp directory 
    <Directory /var/www/html>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>


<VirtualHost *:443>
    ServerName domain.local

    DocumentRoot "/var/www/html/"

    RewriteEngine on
    RewriteCond "%{HTTP_HOST}%{REQUEST_URI}" "^domain\.local\/?$"
    RewriteRule.* https://domain_new.local
    
    SSLEngine on
    
    # html directory contains gp directory     
    <Directory /var/www/html>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    
    SSLCertificateFile /etc/pki/tls/certs/domain.local.crt
    SSLCertificateKeyFile /etc/pki/tls/private/domain.local.key
    SSLCertificateChainFile /etc/pki/tls/certs/domain.local.ca-bundle
</VirtualHost>
0
18.03.2021, 23:20

Я не проверял, но заметил несколько (потенциальных )проблем:

  • RewriteCond "%{HTTP_HOST}%{REQUEST_URI}" "^domain\.local\/?$"
    \перед /может быть проблемой. В общем, нет смысла включать REQUEST_URIв RewriteCond, так как он у вас снова в строке RewriteRule.
  • RewriteRule "^domain\.local\/?$"
    Домен там не при чем. RewriteRuleсоответствует только REQUEST_URI.
  • В конфигурации HTTPS отсутствует правило перезаписи для https://domain.local.
1
18.03.2021, 23:20

Теги

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