Bir .htaccess dosyasında uzun bir satır sonu


10

.Htaccess dosyamda bir Content-Security-Policy üstbilgisi ayarlıyorum ve son derece uzun bir satır olacak şekilde yönetildi. Bu satırı daha yönetilebilir alt dizelere ayırmanın bir yolu var mı?

Önemsiz bir örnek olarak, şöyle bir başlık ayarladığımı varsayalım

Header set Content-Security-Policy "deafult-src http://domainA.com; script-src http://domainB.com"

(Belirgin kırılma problemleri olmadan) özel durumumu aşağıdaki gibi bir şeyle başarabilirim

Header append Content-Security-Policy "default-src http://domainA.com;"
Header append Content-Security-Policy "script-src http://domainB.com"

ancak bu dizeye virgül ekleyecektir, bu yüzden yanıta ek karakter eklemeden genel olarak uygulanabilecek daha iyi bir yanıt olup olmadığını hala merak ettim.

İdeal olan, dizeyi daha küçük parçalara ayırmak için kullanabileceğim bazı birleştirme karakteri olsaydı,

Header set Content-Security-Policy "default-src http://domainA.com;"
\" script-src http://domainB.com"

veya

Header set Content-Security-Policy "default-src http://domainA.com;"^
" script-src http://domainB.com"

veya

Header set Content-Security-Policy "default-src http://domainA.com;"
+" script-src http://domainB.com"

Alternatif olarak, bir çeşit değişken ayarlayabilir ve sadece içeriğini gibi bir şey yapmak için dökebilirsem

a="default-src http://domainA.com;"
b=" script-src http://domainB.com"
Header set Content-Security-Policy $a$b

bu da çok daha yönetilebilir olurdu.

Bir yoktu nginx için geldi benzer konu ve sonuca (ekleme çözüm çalıştı olmazdı bu yüzden, uzun regex ile uğraşmaktaydı) sadece uzun çizgilerle canlı oldu; Apache için de durum böyle olacak mı?


Holding, alt dizelerinizin her birini yaptıktan sonra vardiya ve enter tuşuna basar mı?
StixO

@StixO Hayır, bu sorun apache'nin conf dosyalarındaki dizeleri nasıl ayrıştırdığı ile ilgilidir. Genellikle (genellikle HTML) editörleri, satır kesmeleri (örneğin, <br />) ve paragraf kesmeleri (</p>) arasında ayrım yapmak için böyle bir kısayol kullanır. Bu, ayrıştırılan biçimlendirme biçimine ve düzenleyiciye bağlı olacaktır. Apache conf dosyaları salt metindir ve bu nedenle bir paragraf arasındaki fark yoktur (değiştiriciden bağımsız olarak, enter \ n veya \ r gibi tek, sisteme bağımlı bir satırbaşı karakteri üretir).
MaxPRafferty

Yanıtlar:


14

Aşağıdakiler işe yaramalıdır:

 Header set Content-Security-Policy "default-src http://domainA.com; \
      script-src http://domainB.com"

Bunu test ettim ve aldım Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration.
kasperd

1
@kasperd koşmalısına2enmod headers
MaxPRafferty

@BazzaDP İlginç! Bu sunucunun kaçan bir satırsonu göndermesine neden olacağını beklerdim, ancak istediğim şekilde birleştiğini ve istemciler perspektifinden fark edilemez gibi görünüyor.
MaxPRafferty

1
Vay be, aslında, açıkça bu şekilde herhangi bir boşluk karakteri kaçabilirsiniz. \ <tab> ile de çalıştığı onaylandı. .htaccess hiç bu kadar güzel görünmemişti!
MaxPRafferty

1
Ha, hatta regex'i kırmaya çalışıyor! @BazzaDP, bu cevabı da bahsettiğim o nginx sorusuna bırakmak isteyebilirsiniz, orada da işe yarayabilir.
MaxPRafferty

5

Evet - ters eğik çizgi bir satır devamı olarak çalışır . Bu, [ https://httpd.apache.org/docs/2.4/configuring.html#page-header] üzerindeki Apache 2.4 dokümantasyonuna gömülmüştür.

Önemli kurallar:

  1. Bir çizgi içindeki boşluk iyi, yani. herhangi bir sayıda sekme ve boşluk;
  2. Sonuncusu hariç tüm satırlardaki son karakter ters eğik çizgi olmalıdır ; <
  3. Son dizi gerekir olmayan bir eğik çizgi ile son ver;
  4. Apaçi açıklama karakteri (#) olamaz bir satırı yorum kullanılacaktır.

Bu kurallara uyulmazsa, sunucu Hata 500 ile yanıt verir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.