Mam stronę internetową: www.explainmortgage.com
Na tej stronie mam http://www.explainmortgage.com i http://www.explainmortgage.com/mortgage (wśród wielu innych stron).
http://www.explainmortgage.com i http://www.explainmortgage.com/mortgage są identyczne, więc chcę 301 http://www.explainmortgage.com/mortgage do http://www.explainmortgage.com
Używam tej samej bazy kodów dla wielu domen i większość ma podobną sytuację.
Chcę więc napisać jedną parę RewriteCond RewriteRule, która obejmie tę sytuację we wszystkich moich domenach przy użyciu tej bazy kodów.
Oto reguła (w kodzie psuedo), którą chcę:
if ({HTTP_HOST}) contains ({REQUEST_URI} minus the leading /)
then 301 to http://{HTTP_HOST}
przykłady:
{HTTP_HOST} == "www.explainmortgage.com"
{REQUEST_URI} == "/mortgage"
{HTTP_HOST} == "www.explaincars.com"
{REQUEST_URI} == "/cars"
{HTTP_HOST} == "www.explaineducation.com"
{REQUEST_URI} == "/education"
{HTTP_HOST} == "www.explainelectronics.com"
{REQUEST_URI} == "/electronics"
Tak więc, jeśli istnieje jakiś guru wyrażeń regularnych, który chciałby mi pomóc, byłbym bardzo wdzięczny.
Odpowiedzi:
3 dla odpowiedzi № 1Próbować:
RewriteCond %{HTTP_HOST} ^(www.)?explain([^.]+).com$ [NC]
RewriteCond %{REQUEST_URI}:%2 ^/([^/]+)/?:1 [NC]
RewriteRule ^ / [R=301,L]
Sztuczka polega na tym, aby najpierw zgrupować mecz dla dowolnego elementu po explain
i przed .com
w %{HTTP_HOST}
, a zatem (ponieważ nie możemy użyć zmiennych% w drugim parametrze dla a RewriteCond
) łączymy URI i poprzednie odwołanie wsteczne razem i używamy 1
dopasować się do tego. Jeśli są takie same, przekieruj na /
.
0 dla odpowiedzi nr 2
Jeśli wszystko czego potrzebujesz to http://www.explainmortgage.com/mortgage
przekierować do http://www.explainmortgage.com
, następująca reguła w twoim .htaccess
plik to zrobi. The NC
Flaga powoduje, że wielkość liter nie ma znaczenia. NIE wpłynie to na (przekierowanie lub przepisanie) URI=/mortgage/
.
RewriteRule ^mortgage$ / [R=301,L,NC]
Z twojego komentarza mówisz, że chceszprzekieruj więcej adresów URL na stronę główną, być może poniższe informacje mogą pomóc osiągnąć to, czego chcesz. Następujące przekieruje adresy URL wskazujące na nieistniejące pliki lub katalogi na twoją stronę główną w dowolnej domenie. Na przykład, jeśli „/ mortgage”, „/ bob”, „/ carol” nie istnieją jako pliki, wszystkie zostaną przekierowane do „/”.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [R=301,L]