HT Access - Мод Переписать - PullRequest
       9

HT Access - Мод Переписать

3 голосов
/ 15 декабря 2009

Если я использую:

RewriteEngine On
RewriteRule ^.* controller.php

Это будет отправлять все запросы к controller.php Но если controller.php включает файл css (/assets/css/main.css), то он не будет работать, как если бы браузер вызывал его, он просто перенаправлял бы на controller.php

Есть ли способ, как я могу это исправить?

Ответы [ 2 ]

6 голосов
/ 15 декабря 2009

Вы можете добавить условие , чтобы исключить URL-адреса, которые можно сопоставить с реально существующими файлами:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* controller.php

Ключевое слово -f будет проверять, является ли абсолютный путь в %{REQUEST_FILENAME} путем к существующему обычному файлу в файловой системе, а !-f - только обратным.

Но если у вас есть фиксированный список каталогов, которые вы хотите исключить, вы также можете сделать это:

RewriteCond $0 !^(assets|foo|bar)/
RewriteRule ^.* controller.php

Это условие проверяет, не начинается ли совпадение всего шаблона RewriteRule (обозначается $0) ни с assets/, ни с foo/, ни с bar/. Если вы не хотите обрабатывать совпадение, вы также можете использовать отрицательное выражение непосредственно в вашей директиве RewriteRule:

RewriteRule !^(assets|foo|bar)/ controller.php
0 голосов
/ 15 декабря 2009

Попробуйте это:

RewriteEngine On

RewriteCond %{REQUEST_URI} !\.css$
RewriteRule ^.* controller.php

не проверено, но должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...