.htaccess mod_rewrite в корневом каталоге, но нужно пропустить все остальные каталоги - PullRequest
1 голос
/ 25 августа 2009

Вот схема каталога:

/
/css
/js
/admin
/config
/etc...

Так вот что я хотел бы:

/                      <-- Mod re-write for this directory only, skip the rest
/css
/js
/admin
/config
/etc...

.htaccess файл:

# Turn rewrite engine on
RewriteEngine On

# Set the base path
RewriteBase   /

#  now the rewriting rules
RewriteRule ^([0-9A-Za-z]+)/?$ /query.php?id=$1 [L]

Хотите пропустить все каталоги, кроме корневого, как мне это сделать?

Ответы [ 2 ]

5 голосов
/ 25 августа 2009

Другое решение: поставьте одно из этих правил перед вашими правилами:

RewriteRule ^(css|js|admin|config|…)(/|$) - [L]

RewriteCond %{DOCUMENT_ROOT}$0 -d
RewriteRule ^[^/]+ - [L]

Последнее именованное правило будет работать для любого существующего каталога, но только в том случае, если оно помещено в файл .htaccess в корневом каталоге документов сервера. В противном случае вам нужно будет настроить RewriteCond выражение %{DOCUMENT_ROOT}$0 с конкретным путем, например, %{DOCUMENT_ROOT}foo/bar/$0.

0 голосов
/ 25 августа 2009

Вы пытались поместить файл .htaccess в каждый подкаталог с отключенным RewriteEngine?

(возможно, это вопрос к serverfault.com)

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