htaccess удалить префикс URL, проверить, существует ли файл, если не отправить в index.php - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть некоторые трудности с mod_rewrite, вот что я хочу сделать

  1. Удалить префикс url, который начинается с / c / * /
  2. После удаления префикса проверьтеесли файл существует и если так, используйте его
  3. Если файл не существует, отправьте запрос на index.php

В моем случае / c / TENANT_CODE / этоиспользуется для идентификации моего арендатора в мультитенантной системе.TENANT_CODE будет меняться от одного клиента к другому.

Примеры:

Доступ к статическому изображению

http://localhost/c/dev/img/someimage.png

В этом случае изображение существует на сервере, поэтомуя просто хочу вернуть существующее изображение.Я хочу переписать свой URL-адрес на http://localhost/img/someimage.png.

Доступ к маршруту

http://localhost/c/dev/some/route

В этом случае http://localhost/some/route делаетне существует, поэтому я хочу отправить его на главную страницу index.php, чтобы он мог быть обработан с помощью laravel.

Вот то, что у меня пока есть, но оно не работает

RewriteCond %{REQUEST_URI} ^/c/([^/]*)(/.*)$
RewriteRule ^/c/([^/]*)(/.*)$ $2 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [QSA,L]

Спасибо за ваши комментарии заранее

1 Ответ

0 голосов
/ 19 февраля 2019

Ваше первое правило должно работать, но вам не нужно условие.

RewriteRule ^/c/([^/]*)(/.*)$ $2 [QSA,L]

В остальном попробуйте использовать SCRIPT_FILENAME:

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule .* index.php [QSA,L]
...