Назад | Перейти на главную страницу

Apache mod_rewrite - почему удобный URL не работает со статическими файлами?

Моя конфигурация для использования удобного URL-адреса отлично работает, когда местом назначения является скрипт php, например:

RewriteRule ^products/([a-z0-9-]+)/([0-9]+)/?$ /prod.php?id=$2&name=$1 [NC]

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

RewriteRule ^\/css\/\_version\_([1-9]+)\_([0-9])\/(.*)$ /stat/css/$3    [NC]

Приведенная выше конфигурация работает только тогда, когда я устанавливаю флаг перенаправления, например:

RewriteRule ^\/css\/\_version\_([1-9]+)\_([0-9])\/(.*)$ /stat/css/$3    [R]

Назначение "/stat/css/*.css" существует. Когда я использую конфигурацию «Псевдоним», она тоже работает. Но для этого мне нужно использовать mod_rewrite.

Журналы ошибок (режим отладки) об этом не ведутся. Только 404 в журналах доступа.

Кто-нибудь может мне помочь?

Вы можете попробовать (непроверено)

RewriteRule ^css/_version_([1-9]+)_([0-9]\/(.*)$ /stat/css/$3

Отличия от вашего примера:

  • Без косой черты. Это необходимо в определении VHost, но не должно быть включено в .htaccess файл, например. В вашем первом (рабочем) примере этого нет.

  • Меньше бегства. Это не кажется необходимым и делает выражение более разборчивым.