Ваше регулярное выражение для первых двух RewriteRules также соответствует вашему мобильному пути, поскольку user/(.*)/$
просто проверяет, соответствует ли шаблон в конце пути запроса. Вы должны добавить ^
в начало ваших тестов, чтобы они проверяли, что полный путь запроса совпадает, как показано ниже:
RewriteRule ^user/(.*)/$ /viewer/index.php?profile=$1
RewriteRule ^user/(.*)$ viewer/index.php?profile=$1
RewriteRule ^mobile/user/(.*)/$ /mobile/index.php?user=$1
RewriteRule ^mobile/user/(.*)$ mobile/index.php?user=$1
В качестве примечания вы также можете сэкономить механизму переписывания немного проблем и сократить набор правил до двух правил. Я также обновил бы ваши выражения захвата, так как вы, вероятно, вообще не смотрите их, чтобы включить прямые косые черты:
RewriteRule ^user/([^/]*)/?$ /viewer/index.php?profile=$1
RewriteRule ^mobile/user/([^/]*)/?$ /mobile/index.php?user=$1