Получить имя текущего каталога в htaccess и предотвратить перенаправление - PullRequest
0 голосов
/ 23 октября 2018

У меня есть .htaccess файл:

Options +FollowSymLinks
DirectorySlash On
RewriteEngine On

# Remove trailing slash for non directories
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)/$ /mydir%1/$1 [R,L=303]

# Make direct files accessible
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !^base.php.*$
RewriteRule ^([^\n]+)|(.*)$ base.php?___ROUTE=$1 [QSA,END]

, который имеет следующие режимы перенаправления:

  1. ✔️ d.com/mydird.com/mydir/
  2. ✔️ d.com/mydir/nothing пробег
  3. ✔️ d.com/mydir/nothing/d.com/mydir/nothing
  4. d.com/mydir/exist_dird.com/mydir/exist_dir/?___ROUTE=exist_dir
  5. d.com/mydir/exist_dir/ пробег
  6. ✔️ d.com/mydir/exist_file.css запуск
  7. ✔️ d.com/mydir/exist_file.css/d.com/mydir/exist_file.css

К run Я имею в виду, что он отвечает на содержимое файла или выполняет base.php?___ROUTE=$1

Теперь у меня проблема и вопрос

Задача :

Я не знаю, как исправить перенаправление номер 4.

Номер 5 должен перенаправить на d.com/mydir/exist_dir.

И номер 4 должен выполнить base.php?___ROUTE=$1 вместо перенаправления

Вопрос :

Как использовать текущее имя каталога в .htaccess вместо записи его имени в каждом проекте?

Я имею в виду /mydir в RewriteRule ^(.*)/$ /mydir%1/$1 [R,L=303]

1 Ответ

0 голосов
/ 25 октября 2018

Я сделал это.

Как исправить перенаправление на не-каталог с конечной косой чертой

Сначала я сделал ENV Variable для удалил концевую косую черту , затем использовал ее в RewriteRule.

Options +FollowSymLinks
DirectorySlash On
RewriteEngine On

SetEnvIf Request_URI ^(.*)/$ CUSTOM_BASE_DIR=$1

# Remove trailing slash for non directories
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)/$ %{ENV:CUSTOM_BASE_DIR} [R,L=303]

# Make direct files accessible
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !^base.php.*$
RewriteRule ^([^\n]+)|(.*)$ base.php?___ROUTE=$1 [QSA,END]
...