2016-08-06 11 views
8

Mam Wordpress witryny z WPML zainstalowane. Zrobiłem 2 rzeczy ostatnio:Przekierowanie z .htaccess nie działa poprawnie, gdy brakuje/na końcu

Ma to na celu poprawić SEO. Jednak podczas gdy mam, że praca bez większego problemu przy użyciu:

# BEGIN HTTPS 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{SERVER_PORT} ^80$ 
#RewriteCond %{HTTPS} !^on$ 
#RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L] 
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
</IfModule> 
# END HTTPS 
# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

W apache.conf plik ServerName domain.xyz, ServerAlias domain.pl www.domain.pl i tak dalej. Mam problemy z większością moich starych wpisów na blogu, które są dostępne w Internecie w różnych formach. Na przykład:

Wygląda na to, że ostatnie / robi ogromną różnicę.

Mam zamiar dodać wszystkie przekierowania w nawet bezpośrednich formularzach od 1 do 1 do nowej domeny, ale ponieważ jest to częściowo działające, częściowo nie jestem w pewnym sensie zagubione ... i nie jestem pewien, jak mogłem je poprawnie przetłumaczyć .

EDIT:

Próbowałem wielu opcji, nawet taki, który rzekomo przepisuje wszystkie linki kończyć się/i nadal kończy się niepowodzeniem.

# BEGIN HTTPS 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
#RewriteCond %{SERVER_PORT} ^80$ 
#RewriteCond %{HTTPS} !^on$ 
#RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L] 
#RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
#RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
#RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
RewriteCond %{HTTPS} !^on$ 
#RewriteRule (.*) https://evotec.xyz/$1 [R=301,L] 
#RewriteRule (.*) https://%{SERVER_NAME%}/$1 [R=301,L] 
#RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteCond %{REQUEST_URI} !(.*)/$ 
#RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [L,R=301] 
#RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteCond %{REQUEST_FILENAME} !\.(gif|jpg|png|jpeg|css|js)$ [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [L,R=301] 


</IfModule> 
# END HTTPS 

Kolejna zmiana:

Nie działa to całkowicie dla wszystkich slash vs non-slash. Chodzi raczej o tłumaczenie jakiegoś rodzaju, które nie występuje, jeśli wskazuje na starą domenę.

Próbowałem używać narzędzia Redirect Checker, aby zobaczyć, jak to działa (na odpowiednim przykładzie), ale nie mogę z tego nic zrozumieć.

stałe przeniósł https://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1/ 301 Przeniesiono na stałe https://evotec.xyz/hub/scripts/office365-addbulkemailaddressses-ps1/ 200 OK

Przeniesiony na stałe https://evotec.xyz/hub/scripts/office365-addbulkemailaddressses-ps1/ 200 OK

https://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1 404 Not Found

Im więcej opcji próbuję dziwniejsze robi. Choć RedirectChecker wydaje się pokazując jedno ... przeglądarka zachowuje się nieco inaczej i nie działa za pierwszym wejściu jakikolwiek powodując 404 od razu

Edit:

Jeśli mogę zostawić tylko dane „WordPress” Oto prawda:

To tylko działa prawidłowo, jeśli mogę użyć poprawnej/nową domenę następnie wszystko działa prawidłowo:

Domyślam się, że jeśli nie mogę go przekierować, zostawię to tak, jak jest, i po prostu się poddam.

+0

Wygląda na problem z dyrektywą DirectorySlash. Sprawdź ten [link] (http://httpd.apache.org/docs/2.2/en/mod/mod_dir.html#directoryslash), może to pomóc. –

+0

Zaktualizowałem mój wpis. Wygląda na to, że dyrektywa katalogowa nie wydaje się działać częściowo. – MadBoy

+0

Możesz usunąć wszystkie reguły z .htaccess i zachować tylko domyślną regułę WP między '# BEGIN WordPress' i' # END WordPress'. Następnie całkowicie wyczyść pamięć podręczną przeglądarki, a następnie wprowadź wszystkie 4 adresy URL, aby zobaczyć, które z nich nadal przekierowują na adres "https://domain.xyz/ ' – anubhava

Odpowiedz

2

Naprawdę rozwiązałem to za pomocą wtyczki SEO Redirection Premium dla Wordpress.

enter image description here

Jest w stanie przekierować linki bez /.W tym przypadku zrobiłem to ręcznie, ale pracuję nad sposobem, aby zrobić to w bardziej globalny sposób z Regeksem. Wystarczy znaleźć właściwy.

enter image description here

0

Utwórz plik .htaccess z poniższym kodzie, to upewnić się, że wszystkie katalogi i stron starej domeny będzie się poprawnie przekierowany do nowej domeny. Plik .htaccess musi być umieszczony w katalogu głównym swojej starej stronie (czyli w tym samym katalogu, w którym plik indeksu jest umieszczona)

Options +FollowSymLinks 
RewriteEngine on 

RewriteRule (.*) https://www.newdomain.com/$1 [R=301,L] 

Wymień www.newdomain.com w powyższym kodzie rzeczywistą nazwą domeny.

Oprócz przekierowania sugeruję skontaktowanie się z każdą linkiem zwrotnym w celu zmodyfikowania ich linku zwrotnego i wskazania nowej strony internetowej (w przypadku SEO).

Uwaga * Ta metoda .htaccess przekierowania działa TYLKO na serwerach Linux z włączoną modulacją Apache Mod-Rewrite.

a następnie przez http na https:

RewriteCond %{HTTP_HOST} ^domain\.com.au$ [OR] 

RewriteCond %{HTTPS} !on 

RewriteRule ^(.*)$ https://www.domain.com.au/$1 [R,L] 

a dodatkowo można również dodać poniższy kod w wp-config.php

define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']); 

define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']); 

Uwaga *: To nie może pracować dla Ciebie nie próbowałem, ale powinieneś raz spróbować i dać mi znać.

+0

To nie wydaje się rozwiązywanie problemu. Mam wiele domen (.xyz i .pl). Mówimy o dziwnym zachowaniu /. Powinieneś zauważyć skomentowane teksty, w których wypróbowałem wiele podobnych propozycji. – MadBoy