RewriteRule не переписывает URL должным образом

RewriteRule не переписывает URL должным образом

У меня есть следующий файл виртуального хоста:

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

По какой-то причине docsправило My Rewrite вообще не вступает в силу. Почему? Правило перезаписи HTTP-->HTTPS в *:80 VirtualHost работает нормально. Я делаю что-то очень похожее.

Связано ли это с наличием двух разных правил Rewrite в разных VirtualHosts?

Есть идеи?

решение1

Согласноhttp://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule:-

Что соответствует?

В контексте VirtualHost шаблон изначально будет сопоставляться с частью URL после имени хоста и порта, но перед строкой запроса (например, «/app1/index.html»).

Ваш шаблон соответствует точному URL "docs". Фактический URL, вероятно, "/docs", поэтому добавление "/" после "^" может сработать:-

RewriteRule    ^/docs$  docs/  [R]

Связанный контент