У нас есть следующее условие / правило mod_rewrite, но оно возвращает ошибку 404 для URL, которые просто начинают «i» (или «css» в этом отношении), если они не соответствуют точно нашим соответствующим каталогам (/ i / css) и др.)
RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt|/(i|css|design_and_docs|js|test)/*)
RewriteRule ^(.*)$ /index.php/$1 [L]
Это лишает меня возможности иметь маршрут / URI (используя CodeIgniter, но я не думаю, что это имеет значение), например / itemid или / idcommand (просто пара, в которой я нуждался на прошлой неделе)
Я могу легко изменить RewriteCond следующим образом, чтобы проверить наличие косой черты, но затем запрос к каталогу / i без косой черты завершится неудачно, тогда как раньше он работал:
RewriteCond $1 !^(index\.php|robots\.txt|/(i|css|design_and_docs|js|test)\//*)
С косой чертой / i / все еще разрешается, и этого может быть достаточно для наших целей. Но я бы очень хотел, чтобы / i все еще разрешал соответствующий каталог / i. Поэтому вместо того, чтобы просто проверять на наличие косой черты в конце, я бы хотел проверить на наличие косой черты, или , отсутствие каких-либо символов.
Как мне это сделать с помощью регулярного выражения?