2009-10-23 2 views

ответ

0

Позволяет анализировать ваше правило очень быстро:

Якорь на старте, соответствие ничего, что не/или не любой символ, 0 или более раз, якорь в конце.

Другими словами, он никогда не будет соответствовать чему-либо, потому что . соответствует чему-либо (и, следовательно, [^.] ничего не соответствует).

Я думаю, что вы имели в виду:

RewriteCond %{REQUEST_URI} !^/?new/ 
RewriteRule ^/?(.+)$ new/$1 [L] 

Это читает
якорь в начале, соответствие 0 или 1 /, а затем 1 или более любого характера (сохранение этот матч для позже), якорь в конце.

(RewriteCond предотвращает перезапись вещи в/новый/каталог, в соответствии с ответом Devin Ceartas в. [L] предотвращает любые дальнейшие редирект)

+1

Во всех регулярных выражений языка я вижу, символы являются дословным внутри [ ] – erikkallen

+0

Упс, вы, вероятно, правы. В этом случае RegEx все еще не прав. – Powerlord

+0

Запрос превысил предел 10 внутренних переадресаций из-за вероятной ошибки конфигурации. Используйте «LimitInternalRecursion», чтобы увеличить предел, если это необходимо. Используйте «LogLevel debug», чтобы получить обратную трассировку. – gwegaweg

1

Будь или не нужно водительство слэш будет зависеть от того, если вы делаете это в файле httpd.conf или в .htaccess или в контейнере в httpd.conf.

Чтобы избежать переписываний петли вы хотите использовать RewriteCond, чтобы убедиться, что вы не соответствуете новым/

Не уверен, что если $ 0 синтаксис работает без захвата скобок?

Смежные вопросы