/ / Regex w .htaccess - w jaki sposób mogę 301 uri, jeśli znajduje się w HTTP_HOST? - regex, .htaccess, apache2, http-status-code-301

Regex w .htaccess - jak mogę 301 uri, jeśli zostanie znaleziony w HTTP_HOST? - regex, .htaccess, apache2, http-status-code-301

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 № 1

Pró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]