mod_rewrite всегда был одним из моих самых слабых мест. Некоторое время я пытался найти решение этой проблемы, и многие ответы просто ссылаются на документацию mod_rewrite , которая мне не помогает. Я считаю, что моя проблема довольно проста, поэтому я надеюсь, что на этот раз кто-то не возражает дать мне халяву.
У меня есть несколько существующих правил mod_rewrite для Drupal:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Что, конечно, отлично работает; они стандартные правила Drupal.
Я хочу перенаправить запросы на
/snippet/yyyy-MMM-dd/name-of-article
до
/snippets/name-of-article
поэтому я изменил правила так:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^snippet/20[0-9]{2}-[a-z]{3}-[0-9]{2}/(.*)$ snippets/$1 [L,R=301] ### MY NEW RULE
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Мое новое правило работает должным образом и выполняет перенаправление правильно. Однако, похоже, что это влияет на запросы CSS и JS, что очевидно из-за отсутствия стилей и ошибок scriptin, g и 404 в журнале ошибок. Если я пытаюсь просмотреть файл CSS или JS напрямую, я получаю тот же HTML-вывод, что и при запросе родительского документа. Так что, очевидно, мое правило нарушено.
Я не знаю, почему это так сложно - кажется простым.