Přesměrování domény na nový jazyk s podsložky

0

Otázka

Mám problém s přesměrováním z mé webové stránky. Před pár dny jsem si koupil .com domény. Existují dva jazyky: italština a němčina. Německé webové stránky byl nastaven na example.de a anglické verzi na example.it.

Teď jsem to změnil na .com domény: example.com s podsložky: example.com/it/ a example.com/it/.

Jak přesměrovat všechny odkazy z example.it k example.com/it/ a example.de k example.com/de/.

...a následující podsložky.

Snažil jsem s

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^example\.de$ [NC]
RewriteRule ^(.*)$ https://example.com/de/ [R=301,L]

Ale bez úspěchu.

.htaccess mod-rewrite redirect subdomain
2021-11-23 16:08:00
1

Nejlepší odpověď

1
RewriteCond %{HTTP_HOST} ^example\.de$ [NC]
RewriteRule ^(.*)$ https://example.com/de/ [R=301,L]

Poté, co zachytil URL-path v RewriteRule vzor, chybí odpovídající backreference v substituční řetězec, takže to bude přesměrovat všechno na domovskou stránku, tj. example.de/<url> k example.com/de/ - <url> je ztracena.

Nicméně, můžete zvládnout i Tld s jediným pravidlem. Od TLD je stejný jako podadresář.

Předpokládám, že všechny tři domény vyřešit na stejné místo.

Zkuste následující místo v kořenovém adresáři .htaccess soubor:

RewriteCond %{HTTP_HOST} ^example\.(de|it) [NC]
RewriteRule (.*) https://example.com/%1/$1 [R=301,L]

Na %1 backreference se týká zachytil TLD z předchozího CondPattern. A $1 backreference obsahuje URL-cestu zachytil v RewriteRule vzor.

Na RewriteBase směrnice je zde není nutné.

Test s 302 (dočasné) přesměrovat, aby se zabránilo ukládání do mezipaměti problémy. Budete muset vymazat cache vašeho prohlížeče, před testováním, neboť chybné 301 (permanentní) přesměrování bude muset být do mezipaměti.


UPDATE#1: Toto je Polylang plugin pro Wordpress.

V takovém případě, tento redirect směrnice musí jít na samém vrcholu své .htaccess soubor, než jakékoli existující WordPress směrnic, včetně před # BEGIN WordPress komentář značku.


UPDATE#2: mám taky .cz domény a podsložky /cs (ISO standard)

Od TLD a podadresáře jsou odlišné, budete muset přidat další pravidlo, aby to zvládl. (To může jít před nebo po výše uvedené pravidlo, protože není tam žádný konflikt.)

Například:

RewriteCond %{HTTP_HOST} ^example\.cz [NC]
RewriteRule (.*) https://example.com/cs/$1 [R=301,L]
2021-11-23 19:55:20

Díky, ale to ještě není přesměrování mě správně. Když jsem navštívit stránku z přímé spojení, jako je: mywebsite.de/mypage/sub-page je stále na .de domény .com/de
Mike

@Mike Pokud jste stále vidět example.de pak je tato směrnice je nedělat vůbec nic. Kde jste uvedení tohoto pravidla? Máte jiné směrnice, které ve své .htaccess souboru? Předpokládám, že všechny 3 domény vyřešit na stejné místo?
MrWhite

To je Polylang plugin pro Wordpress. Já používám .htaccess, aby to udělal. Zatím jsem změnil Polyang nastavení z domény do podsložky nastavení a také WP siteurl je na .com domény. Vše funguje dobře, když jsem klikněte na odkazy na webových stránkách, ale žádné přímé odkazy. Když jsem vložit URL na můj webový prohlížeč s starý odkaz .de domény je stále otevírá .de URL .com/de/
Mike

Ano, ale kde jsou ti uvedení těchto směrnic přesně? A kde všechny 3 z těchto domén vyřešit? (Jak je požadováno v můj komentář výše.) Pokud používáte WordPress, pak tyto směrnice musí jít na samém vrcholu své .htaccess soubor, než všechny existující WordPress směrnic. Před # BEGIN WordPress oddíl.
MrWhite

Ohhhh vidím. Ano, jste génius! 1 řádek htaccess funguje dobře pro mě! Děkuji. Ale mám další problém. Také mám .cz domény a podsložky /cs (ISO standard) a doména je .cz. Jak na přesměrování?
Mike

@Mike zač. Budete muset přidat další pravidlo zvládnout .cz / /cs žádost - aktualizoval jsem svou odpověď.
MrWhite

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................