Перенаправление / media / * в / project / media / * и все остальное в /dispatch.php - PullRequest
0 голосов
/ 06 января 2010

У меня есть следующие правила переписывания:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /

  # Route requests to /media/* to /projects/media/*
  RewriteRule ^media/.* - [NC,L]

  # Route all URLs to dispatch.php.
  RewriteRule ^(.*)$ dispatch.php [L]
</IfModule>

Это перенаправляет все в dispatch.php, если только URL не равен example.com/media/*, и в этом случае он будет искать запрошенный файл в ./media/. Я хотел бы, чтобы URL /media/* был переписан для просмотра в project/media/*.

Использование правила перезаписи RewriteRule ^media/.* project/media [NC,L] приводит ко всему, что будет отправлено в dispatch.php.

Ответы [ 4 ]

0 голосов
/ 06 января 2010

Решение можно найти здесь .

0 голосов
/ 06 января 2010

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

RewriteRule ^media/.* project/$0 [NC,L]
RewriteRule !^project/ dispatch.php [L]
0 голосов
/ 06 января 2010
RewriteEngine on
RewriteBase /
# Route requests to /media/* to /projects/media/*
RewriteRule ^media/(.*)$ project/media/$1 [L]
# Route all URLs to dispatch.php.
RewriteCond %{REQUEST_URI} !^/project/media/.*
RewriteRule ^(.*)$ maintenance.php [L]

Изначально я хотел использовать специальную переменную %{IS_SUBREQ}, но не смог заставить ее работать.

0 голосов
/ 06 января 2010

Вам нужно захватить путь и добавить его.Такие как:

RewriteRule ^media/(.*)$ project/media/$1 [NC,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...