
У меня есть следующий файл виртуального хоста:
<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]