перепишите, а затем перенаправьте на ту же страницу с .htaccess

#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. проверьте обновленный ответ. Вам нужно добавить ? в конце цели, чтобы удалить предыдущую строку запроса.