RewriteRule ^[^/.]*$ new/$0
каждый раз я типа mydomain.com/somepath/to/somewhere
он выбрасывает 404нужно переписывать символ (@ #%^& * /!)
его должны перевести: mydomain.com/new/somepath/to/somewhere
RewriteRule ^[^/.]*$ new/$0
каждый раз я типа mydomain.com/somepath/to/somewhere
он выбрасывает 404нужно переписывать символ (@ #%^& * /!)
его должны перевести: mydomain.com/new/somepath/to/somewhere
Позволяет анализировать ваше правило очень быстро:
Якорь на старте, соответствие ничего, что не/или не любой символ, 0 или более раз, якорь в конце.
Другими словами, он никогда не будет соответствовать чему-либо, потому что .
соответствует чему-либо (и, следовательно, [^.
] ничего не соответствует).
Я думаю, что вы имели в виду:
RewriteCond %{REQUEST_URI} !^/?new/
RewriteRule ^/?(.+)$ new/$1 [L]
Это читает
якорь в начале, соответствие 0 или 1 /, а затем 1 или более любого характера (сохранение этот матч для позже), якорь в конце.
(RewriteCond предотвращает перезапись вещи в/новый/каталог, в соответствии с ответом Devin Ceartas в. [L] предотвращает любые дальнейшие редирект)
Будь или не нужно водительство слэш будет зависеть от того, если вы делаете это в файле httpd.conf или в .htaccess или в контейнере в httpd.conf.
Чтобы избежать переписываний петли вы хотите использовать RewriteCond, чтобы убедиться, что вы не соответствуете новым/
Не уверен, что если $ 0 синтаксис работает без захвата скобок?
Во всех регулярных выражений языка я вижу, символы являются дословным внутри [ ] – erikkallen
Упс, вы, вероятно, правы. В этом случае RegEx все еще не прав. – Powerlord
Запрос превысил предел 10 внутренних переадресаций из-за вероятной ошибки конфигурации. Используйте «LimitInternalRecursion», чтобы увеличить предел, если это необходимо. Используйте «LogLevel debug», чтобы получить обратную трассировку. – gwegaweg