#apache #.htaccess #mod-rewrite
Вопрос:
URL-адрес по умолчанию: domain.com/contact.php
Перепишите URL на: domain.com/contactus
Затем, когда мне нужно ввести URL-адрес по умолчанию: domain.com/contact.php
он должен перенаправить (открыть) на domain.com/contactus
Я пытался
RewriteRule ^contactus$ contact.php [L]
RewriteRule contact.php contactus [NC,R=301,L]
Ответ №1:
Вам нужно одно правило перенаправления для принудительного ввода нового URI в браузерах и одна перезапись для пересылки нового URI в файл php:
RewriteEngine On
# redirect rule
RewriteCond %{THE_REQUEST} s/contact.php[?s] [NC]
RewriteRule ^ /contactus? [L,R=301]
# rewrite rule
RewriteRule ^contactus/?$ contact.php [L,NC]
?
в целевом URI будет удалена существующая строка запроса.
Комментарии:
1. Отлично, не могли бы вы объяснить насчет
s
2. Он совпадает с пробелами перед URI, чтобы убедиться, что мы не совпадаем с чем-то вроде
/subdir/contact.php
3. Большое вам спасибо, еще один вопрос, когда, если формат URL по умолчанию:
domain.com/contact.php?action=billing
? Я пыталсяRewriteCond %{THE_REQUEST} s/contact.php?action=billing[?s] [NC]
, но не получилось.4. Попробуй
RewriteCond %{THE_REQUEST} /contact.php?action=billing [NC]
5. проверьте обновленный ответ. Вам нужно добавить
?
в конце цели, чтобы удалить предыдущую строку запроса.