RewriteRule no reescribe la URL correctamente

RewriteRule no reescribe la URL correctamente

Tengo el siguiente archivo de host virtual:

<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>

Por alguna razón, mi docsregla de reescritura no tiene ningún efecto. ¿Por qué es esto? Mi regla de reescritura HTTP-->HTTPS en *:80 VirtualHost funciona correctamente. Estoy haciendo algo realmente similar.

¿Tiene que ver con tener dos reglas de reescritura diferentes en diferentes VirtualHosts?

¿Algunas ideas?

Respuesta1

segúnhttp://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule:-

¿Qué es coincidente?

En el contexto de VirtualHost, el patrón se comparará inicialmente con la parte de la URL después del nombre de host y el puerto, y antes de la cadena de consulta (por ejemplo, "/app1/index.html").

Su patrón coincide con una URL exacta de "docs". La URL real probablemente sea "/docs", por lo que agregar "/" después de "^" puede funcionar:

RewriteRule    ^/docs$  docs/  [R]

información relacionada