Реших да преобразувам всичките си динамични страници в статични URL адреси на страници. Преди имах "/contactUS.php", а сега искам страницата да се обслужва като "/ contact-us".

Свикнах да следвам правило n .htaccess:

RewriteRule ^contact-us contactUS.php [NC,L] 

Всичко работи добре, но проблемът е, че искам да предотвратя влизането на "/contactUS.php" в дублирано съдържание на aviod. Разбира се, че добавянето на следното правило:

RewriteRule ^contactUS.php contact-us [NC,L] 

създава безкраен цикъл.Кой е най-добрият начин за постигане на целта, като се вземе предвид и SEO?


Редактиране:

Това причинява безкраен цикъл:

RewriteRule ^contact-us contactUS.php [NC,L] RewriteRule ^contactUS.php contact-us [NC,R=301] 

  • Джоел: вижте RewriteCond Добавих.

Презапишете contact-us като contactUS.php.

Пренасочете contactUS.php, за да се свържете с нас.

Редактиране:

Пренасочванията и пренаписванията са 2 различни неща. При пренасочване промяната на URL адреса се извършва от страна на клиента. При пренаписване промяната на URL адреса се извършва изцяло от страна на сървъра. Т.е .:

Пренасочване

Client: GET /foo Server: Location: /bar Client: GET /bar Server: [/bar] 

нова редакция

Client: GET /foo (Server: /foo --> / bar) Сървър: [/ bar]  ?> var13 ->

Така че, ако настроите горните правила за пренаписване и пренасочване, клиентът винаги ще навигира до <?php /contact-us, докато сървърът винаги ще обслужва /contactUS.php.

Edit2:

За съжаление, забравих да спомена, че mod_rewrite прилага правила за пренаписване както към вътрешни заявки, така и към заявки на клиенти. Така че трябва да добавите условие за пренаписване към пренасочването, за да предотвратите това:

RewriteRule ^contact-us$ contactUS.php [L] RewriteCond %{ENV:REDIRECT_STATUS} !=200 RewriteRule ^contactUS.php$ contact-us [R=301] 
  • Това причинява безкраен цикъл .:
  • При опит за RewriteRule ^ contact-us contactUS.php [NC, L], RewriteRule ^ contactUS.php contact-us [NC, R = 301]
  • Пренасочването не е същото като пренаписването ... Това няма да причини безкраен цикъл.
  • Редактирах въпроса с кода, който причинява цикъл за пренасочване (получавам грешка „Тази уеб страница има цикъл за пренасочване“). Какво не е наред с този код?

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?