Чтобы ваши правила переписывания были управляемыми, лучше всего преобразовать URL без введения новых переменных.
В вашем примере невозможно использовать простую текстовую заменуперейти от somepage.php к sub_page.php, а затем otherpage.php к sub_page2.php - вам понадобится новое правило для каждой страницы, потому что только вы знаете о сопоставлении.Намного проще основывать URL-адрес результата на данных в исходном URL-адресе.
Например, вы можете разработать схему, в которой:
demo.example.com/somepage.php?start=5
преобразуется в
www.example.com/sub_somepage.php?user=demo&start=5
При этой схеме имя целевого сценария может быть получено из имени исходного сценария.RewriteRule для этой схемы будет выглядеть так:
RewriteRule ^/([A-Za-z0-9_]+\.php) /sub_$1?user=%1 [qsappend]
Получение правил перезаписи для правильной работы может быть довольно сложным.Пока вы уточняете свои правила, вы, вероятно, захотите добавить это в свою конфигурацию:
RewriteLog "/tmp/httpd-rewrite.log"
RewriteLogLevel 5
Затем вы можете проверить, что ваши правила делают то, что вы хотите.Дополнительную информацию о том, как работают эти директивы, можно найти по адресу httpd.apache.org .В частности, если вы хотите перенаправить на другой хост для обслуживания контента, вам нужно будет добавить новое имя хоста в замену и флаг [redirect].