RewriteRule schreibt URL nicht richtig um

RewriteRule schreibt URL nicht richtig um

Ich habe die folgende virtuelle Hostdatei:

<IfModule !wsgi_module>
  LoadModule wsgi_module modules/mod_wsgi.so
  WSGISocketPrefix run/wsgi
</IfModule>

<VirtualHost *:80>
  RewriteEngine On
  RewriteLog "/var/log/httpd/rewrite_log"
  RewriteLogLevel 1
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,L]
</VirtualHost>

<VirtualHost *:443>
  ServerName https://tendril-api.dev.adnxs.net
  ServerAlias 06.tendril-api.dev.nym2.adnexus.net/api

  RewriteEngine  on
  RewriteRule    ^docs$  docs/  [R]
  ... 
  # SSL & WSGI Setup
</VirtualHost>

Aus irgendeinem Grund wird meine docsUmschreiberegel überhaupt nicht wirksam. Warum ist das so? Meine HTTP-->HTTPS-Umschreiberegel im *:80 VirtualHost funktioniert einwandfrei. Ich mache etwas ganz Ähnliches.

Hat es damit zu tun, dass es in unterschiedlichen virtuellen Hosts zwei unterschiedliche Rewrite-Regeln gibt?

Irgendwelche Ideen?

Antwort1

Gemäßhttp://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule:-

Was wird abgeglichen?

Im VirtualHost-Kontext wird das Muster zunächst mit dem Teil der URL nach dem Hostnamen und Port und vor der Abfragezeichenfolge (z. B. „/app1/index.html“) abgeglichen.

Ihr Muster entspricht der exakten URL „docs“. Die tatsächliche URL ist wahrscheinlich „/docs“, daher könnte das Hinzufügen eines „/“ nach dem „^“ funktionieren:-

RewriteRule    ^/docs$  docs/  [R]

verwandte Informationen