RewriteRule не включает строку запроса и не включает http-host. Кроме того, первым аргументом является шаблон регулярного выражения. Без http-хоста вы будете сопоставлять либо download/page=download(etc)
, либо downloadpage=download(etc)
.
Вам понадобятся 2 правила. Один, который перенаправляет уродливый URL-адрес на хороший URL-адрес. Одно правило необходимо переписать хороший URL для фактического рабочего URL:
#Rewrite ugly url to nice url
RewriteCond %{QUERY_STRING} ^page=download&?(.*)$
RewriteRule ^download/?$ download/show?%1 [R,L]
#Now get the nice url to work:
RewriteRule ^download/show/?$ download/?page=download [QSA,END]
Второе правило использует флаг QSA, что означает, что он добавит исходную строку запроса в строке запроса в RewriteRule. Флаг END останавливает все перезаписи, поскольку L-флаг не делает этого в контексте .htaccess. END доступен только с Apache 2.3.9 и будет вызывать внутреннюю ошибку сервера, если она используется в версии до этого. Обратите внимание, что вам, вероятно, придется изменить второе правило, чтобы указать на фактический файл.
Вы можете найти документацию here.
Редактировать: Обратите внимание, что НИКОГДА не следует проверять правила htaccess с перенаправлением ПОСТОЯННОГО. Если вы допустили ошибку, браузер запомнит эту ошибку! Только конвертируйте временные перенаправления в постоянные переадресации, если все работает так, как вы ожидаете, что оно будет работать.
Где шоу взялось? Следует ли всегда добавлять или нет? Можете ли вы объяснить правила, которые вы хотите применить к URL, более ясными? –