У меня есть сложный набор правил перезаписи, которые я пытаюсь упростить, но продолжаю кончаться в углу. Мои цели заключаются в следующем:Несколько htaccess перезаписывает с субдоменами и исключениями
- Перенаправление весь трафик на сайт через WWW (кроме субдоменов «тест» и «Dev»)
- Перенаправление весь трафик через HTTPS
- Перенаправление весь трафик через определенный каталог (» webservice ') через файл в этом каталоге, используя строки url в качестве параметров
До сих пор у меня есть 2 файла htaccess, один в моем корневом каталоге, а другой в моем каталоге webservice.
Мой корень Htaccess выглядит следующим образом:
RewriteEngine on
# Ensure www on all URLs.
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteCond %{HTTP_HOST} !^(dev|test)\. [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
# Ensure we are using HTTPS version of the site.
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} !^(dev|test)\. [NC]
#RewriteCond %{REQUEST_URI} !^/?(webservice)/
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
До сих пор это работает отлично и перенаправляет большую часть своего трафика правильно через WWW и HTTPS.
Мой второй файл Htaccess выглядит в/WebService/отдыха:
RewriteEngine On
RewriteBase /webservice/rest
RewriteRule ^([\w-]+)/?(\?([\w-=?&]))?$ api_client.php?method=$1¶ms=$2 [L,NC]
Это правильно перенаправляет мои параметры API на основе URL-адрес в правильный файл в/WebService/отдыха ('api_client').
Это как можно ближе к окончательному решению, которое мне удалось получить. Оставшаяся проблема заключается в том, что URL-адреса, которые направлены на URL-адрес «webservice», не перенаправляются на www или https (я также не хочу перенаправлять поддиаграммы «test» и «dev», которые указывают на папку/webservice/rest в качестве исключений)
Любые идеи, как это сделать, сохраняя мой последний параметр перенаправления htaccess веб-сервиса?
Thanks Jon - это ближе, но не совсем там. Если я сделаю это изменение, мне придется раскомментировать эту строку в моем первом блоке кода - «RewriteCond% {REQUEST_URI}!^/? (Webservice) /", и все это СБРОСНО свисает вместе, за исключением случаев, когда я запрашиваю API, начинающийся с простого примера. com (а не www) мое последнее правило перезаписи не правильно выполняет параметры - конечный продукт выглядит как https://www.example.com/webservice/rest/api_client.php?method=exampleMethod¶ms= – contool
Также - мне нужно раскомментируйте эту строку в моем первом блоке кода, иначе я получаю перенаправление на 404 – contool
Поцарапайте, что Джон - это сработало для меня, должно быть, всего лишь несколько минут, чтобы полностью протаиться. Для всех, кто наткнулся на это, мне нужно было исключить мой подкаталог, используя RewriteCond% {REQUEST_URI}!^/? (Webservice)/для этого, чтобы работать, а также добавить все мои riles во второй файл htaccess - возможно, кто-то еще может пролить свет на то, почему – contool