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

правило перезаписи изменило базовый путь веб-приложения

У меня есть простое веб-приложение, и я настроил его на использование .htaccess для правил перезаписи.

Options +followSymlinks
RewriteEngine on
Rewriterule ^records/view/([0-9]+)$ ./record_view.php?id=$1 [NC]

Он работает, но страница не видит внешний файл CSS. Вместо того, чтобы искать ./style.css, он ищет записи / view / style.css.

<link rel="StyleSheet" href="style.css" type="text/css" />

Он работает, если я использую полный путь к нему: href="/myapp/style.css".

Приложение было написано до того, как были добавлены правила перезаписи, поэтому все ссылки в приложении тоже разрываются. href="index.php" должен стать href="/myapp/index.php".

Нужно ли мне возвращаться и исправлять все ссылки, чтобы использовать правила перезаписи, или есть конфигурация, которую я могу изменить? (Ubuntu Server 11, Apache2, PHP5)

Спасибо.

Как насчет того, чтобы перехватить все запросы на ресурсы и переписать их так, как они должны быть?

# Existing config:
RewriteEngine on
RewriteRule ^records/view/([0-9]+)$ ./record_view.php?id=$1 [NC]
# Add:
RewriteRule ^records/view/(.*)$ ./$1 [NC]

Это исправляет ресурсы, но не помогает со ссылками - это должны быть перенаправления.

Вы, конечно, можете обойти это с помощью дополнительных правил, но я бы рекомендовал исправить ссылки. Очистка HTML-кода для работы со структурой вашего приложения имеет больше смысла, чем взломать его в конфигурации Apache.