htaccess, как перенаправить, если все остальные правила не работают?
htaccess всегда давал мне проблемы. Каждый раз, когда я думаю, что понимаю это, htaccess идет вразрез с тем, что я просто думал, что понял. Любая помощь будет с благодарностью.
Что я хочу сделать с htaccess, так это перенаправить URI:
www.example.com/get/something to www.example.com/get.php/something
www.example.com/cape/something to www.example.com/active.php/something
Вместе с кучей других. У меня это отлично работает, но у меня не работает, если ни одно из этих правил не выполняется, а затем перенаправить на мой основной домен. Поэтому, если я получаю URI www.example.com/anythingThatIsNotDefined/anything или просто www.example.com/anythingThatIsNotDefined, я хочу перенаправить его на http://www.anotherexample.com/
Это та последняя часть, которую я не могу заставить работать. Мой текущий файл htaccess:
RewriteEngine On
RewriteRule ^get/(.*)$ /get.php/$1 [L]
RewriteRule ^skin/(.*)$ /active.php/$1 [L]
RewriteRule ^cape/(.*)$ /active.php/$1 [L]
Что мне нужно изменить, чтобы получить что-либо, чего нет, или скин или плащ для перенаправления на другой домен?
Мне нужно будет добавить больше, чем get, skin и cape, но как только я получу это, я смогу легко добавить больше
Заранее спасибо, это действительно меня озадачило.
(Если это не тот сайт стека, который я извиняюсь, это было 50/50 между этим и переполнением. Я не был уверен, к какому из них он принадлежал.)
1 ответ
.htaccess
использует порядок, чтобы определить, что происходит в первую очередь (как и все файлы конфигурации Apache). В вашем случае вам просто нужно поместить все ваши "специальные" правила перезаписи перед правилом всеохватывающего типа, как показано ниже.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.otherdomain.com/$1 [R=301,L]
Это правило в основном гласит, что для всего, что не существует как жесткий ресурс (файл или каталог), перенаправьте запрос на http://www.otherdomain.com/, включая строку URI. Предполагая, что это произойдет после переадресации ваших дружественных URL-адресов, они не будут перехвачены.