RewriteRule ^/?$ %1.html [NC,L,QSA]
На перенаправление (предположительно, вы имели в виду «перенаправление», а не «перезапись») с signup.html
на /?c=signup
, тогда вы можете сделать что-то вроде следующего передсуществующее перезапись:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ([^.]+)\.html$ /?c=$1 [R,L]
Условие , которое проверяет переменную окружения REDIRECT_STATUS
, предотвращает цикл перенаправления, когда существующая директива перезаписывает в файл .html
.
Обратите внимание, что это временное (302) перенаправление.Измените R
на R=301
, если он предназначен для постоянного использования, но только после того, как подтвердите, что он работает нормально.
Ваши существующие директивы могут быть убраны, в итоге:
Options +FollowSymLinks -MultiViews
RewriteEngine On
# Redirect from signup.html to /?c=signup
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ([^.]+)\.html$ /?c=$1 [R,L]
# Rewrite from /?c=signup to signup.html
RewriteCond %{QUERY_STRING} ^c=([^&]+)
RewriteRule ^/?$ %1.html [QSD,L]
Предположительно, вы хотите отбросить строку запроса c=
из переписанной замены ?