Построение независимых от пути операторов mod_rewrite для общего файла .htaccess - PullRequest
1 голос
/ 10 апреля 2010

Скажем, у меня есть три небольших веб-приложения, которые хранятся в общем веб-корне:

  • www.example.com / app1 /
  • www.example.com / app2 /
  • www.example.com / app3 /
  • www.example.com / app4 /

у каждого приложения есть .htaccess файл, содержащий некоторые из-mill mod_rewrite операторы для перезаписи URL, такие как

RewriteCond %{REQUEST_URI} ^/app1/([^/]+)/([^/]+)\.html$
RewriteRule .* /app1/index.php?selectedProfile=%1&match=%2&%{QUERY_STRING}

сейчас, я хотел бы иметь универсальный .htaccess файл в каждом каталоге /app{n}.Таким образом, в RewriteConds нет префикса RewriteBase и /app{n}.

Одна идея, которая у меня возникла, заключалась также в том, чтобы сделать первый уровень каталогом подстановочных знаков:

RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)\.html$

, поскольку файл .htaccess запускается только при входе в каталог /app{n}, этодолжно работать.

Это приемлемое решение?

Есть ли другие, лучшие?

1 Ответ

2 голосов
/ 10 апреля 2010

Вам не нужно указывать полный путь.Вы можете использовать относительные пути, которые затем разрешаются из базового пути.

Поэтому попробуйте это правило:

RewriteRule ^([^/]+)/([^/]+)\.html$ index.php?selectedProfile=$1&match=$2 [QSA]

Вы даже можете использовать только это единственное правило в корневом каталоге вашего документа:

RewriteRule ^(app\d+)/([^/]+)/([^/]+)\.html$ $1/index.php?selectedProfile=$2&match=$3 [QSA]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...