apache2.4 mod_rewrite विशिष्ट एलियास डायरेक्ट्रो / यूरी को बाहर करता है


11

मेरे पास मेरे एक vhost पर निम्नलिखित सेटअप है:

...<VirtualHost *:80>
    ServerName cloud.domain.de
    ServerAdmin webmaster@domain.de
    ServerSignature Off

    Alias "/.well-known/acme-challenge" "/var/www/domain.de/vh-www/htdocs/public/.well-known/acme-challenge"

    <Directory "/var/www/domain.de/vh-www/htdocs/public/.well-known/acme-challenge">
      Require all granted
      ForceType 'text/plain'
    </Directory>

    <ifmodule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %(REQUEST_URI) !/\.well\-known/acme\-challenge/?.*
      RewriteCond %{HTTPS} off
      # RewriteRule ^\.well-known/acme-challenge/([A-Za-z0-9-]+)/?$ - [L]
      RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    </ifmodule>...

मैं जो हासिल करना चाहता हूं, वह यह है कि mod_rewrite URL को तब तक फिर से नहीं लिखता जब url http://cloud.domain.de/.well-known/acme-challenge/एक्सेस किया जाता है।

मैंने पहले से ही अलग-अलग तरीकों की कोशिश की, उनमें से एक को ऊपर-नीचे किया गया रि-रीट्रीट कहा जा रहा है, लेकिन कुछ भी काम नहीं करता है: सर्वर इसे हर बार https में फिर से लिखता है।

जब मैं परीक्षण उद्देश्यों के लिए पुनर्लेखन को अक्षम कर देता हूं, तो मैं उपनाम URL को ठीक कर सकता हूं ...

मैं विशिष्ट URL को दोबारा कैसे लिखा जा सकता हूं?

जवाबों:


16

उसके जैसा :

<ifmodule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</ifmodule>

यदि URI मैच start with /.well-known/acme-challenge/करता है तो अनुरोध पुनर्निर्देशित नहीं किया जाएगा


सबसे पहले, आप सलाह के लिए धन्यवाद! दुर्भाग्य से, यह काम नहीं किया। जब आप यात्रा करते हैं: http://www.server-plant.de/.well-known/acme-challenge/यह अभी भी फिर से लिखा जा रहा है। (मैंने अपने www-उपडोमेन के लिए एक ही पुनर्लेखन नियम और शर्तें लागू कीं, इसलिए यह पूरी तरह से क्लाउड-उपडोमेन के समान है)
फ्लेबलिंग

संपादित: वहाँ () के बजाय {} था और आवश्यक RewriteCond %{HTTPS} offनहीं है
फ्रूगिज़

हाँ, मैंने सही कोष्ठक की जाँच के बिना आपकी आँख बंद करके नकल की है, लेकिन अच्छी तरह से, श .. होता है :) अब यह आकर्षण की तरह काम करता है और आप दूसरी स्थिति के बारे में भी सही हैं। बस एक सवाल बचा है: अनुगामी के पीछे सब कुछ मैच करने के लिए स्थिति कैसे बदलें /? तो यह index.html और इतने पर नहीं पकड़ेगा?
फ्लेबेलिंग

यह सब पहले से ही मेल खाता start with /.well-known/acme-challenge/है, इसका मतलब /.well-known/acme-challenge/anythingभी पुनर्निर्देशित नहीं किया जाएगा
Froggiz

1
RewriteOptions InheritDownApache 2.4.8 के बाद से सभी वर्चुअल होस्ट्स को रीराइट कॉन्फ़िगरेशन विरासत में मिल सकता है । RewriteEngine Onअभी भी प्रत्येक वर्चुअल होस्ट कॉन्फ़िगरेशन में मौजूद है।
’१५

3

@मार्क "छोटे और अधिक मजबूत" संस्करण का सही संस्करण:

RewriteCond %{REQUEST_URI} ^/\.well\-known
RewriteRule . - [L]

इसके नीचे ssl पुनर्निर्देशन नियमों को रोकने के लिए इसे जोड़ना भयानक है
जेम्स टैन

लाइन 2 में सिंगल डॉट ने मेरे लिए काम नहीं किया। क्या यह इसलिए है क्योंकि यह केवल एक चार्ट से मेल खाता है और यूआरएल में कई चार्ट हैं? मैं इसके बजाय ^ (। *) $ का उपयोग कर रहा हूं।
जेट

0

IMHO छोटा और अधिक मजबूत:

RewriteCond %{REQUEST_URI} ^\.well\-known
RewriteRule - [L]

आप / acme- चुनौती / अंततः जोड़ना चाहते हैं, लेकिन अगर आप इसे एक मनमाना फ़ाइल के साथ डीबग करना चाहेंगे, जैसे ./well-ogn/test यह समाधान बेहतर काम करता है।

यह वास्तव में क्या करता है: दिखता है कि क्या अनुरोध के साथ शुरू होता है। ज्ञात-ज्ञात, उस मामले में कुछ भी नहीं है - (का अर्थ) - और इसे अंतिम नियम बनाएं [एल]


नहीं। Virtualhosts अभी भी पूर्वता है लगता है। "वर्चुअल होस्ट परिभाषा के बाहर संबंधित अनुभागों के बाद अनुभाग <VirtualHost> अनुभागों को लागू किया जाता है। यह वर्चुअल होस्ट को मुख्य सर्वर कॉन्फ़िगरेशन को ओवरराइड करने की अनुमति देता है।" से httpd.apache.org/docs/current/sections.html
फ्रेडरिक नॉर्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.