2

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 переполнением было 50/50). Я не был уверен, кому он принадлежал.)

1 ответ1

6

.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-адресов, они не будут перехвачены.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .