Mam Wordpress witryny z WPML zainstalowane. Zrobiłem 2 rzeczy ostatnio:Przekierowanie z .htaccess nie działa poprawnie, gdy brakuje/na końcu
- Move HTTP tylko do HTTPS tylko
- Move http://domain.pl do https://domain.xyz (angielski)
- Move http://domain.pl/pl do https://domain.pl (Polska)
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:
- Ten mały wpis http://domain.pl/email-address-policy/ przekierowuje prawidłowo https://domain.xyz/email-address-policy/
- Ten mały wejściowej http://domain.pl/powershell-write-host nie. Po prostu przechodzi do https://domain.pl/powershell-write-host, która jest 404 i to wszystko.
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:
- https://domain.xyz/url-is-here - działa poprawnie
- https://domain.xyz/url-is-here/ - działa poprawnie
- https://domain.pl/url-is-here - nie działa, nie jest convered do https://domain.xyz/url-is-here/
- https://domain.pl/url-is-here/ - Convers poprawnie to https://domain.xyz/url-is-here/
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:
- http://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1 dostaje 404 http://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1 dokładnie tak, jak jest
- http://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1/ dostaje https://evotec.xyz/hub/scripts/office365-addbulkemailaddressses-ps1/
- https://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1 dostaje 404 dokładnie tak, jak jest
To tylko działa prawidłowo, jeśli mogę użyć poprawnej/nową domenę następnie wszystko działa prawidłowo:
- https://evotec.xyz/hub/scripts/office365-addbulkemailaddressses-ps1
- https://evotec.xyz/hub/scripts/office365-addbulkemailaddressses-ps1
- http://evotec.xyz/hub/scripts/office365-addbulkemailaddressses-ps1
- http://evotec.xyz/hub/scripts/office365-addbulkemailaddressses-ps1/
Domyślam się, że jeśli nie mogę go przekierować, zostawię to tak, jak jest, i po prostu się poddam.
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. –
Zaktualizowałem mój wpis. Wygląda na to, że dyrektywa katalogowa nie wydaje się działać częściowo. – MadBoy
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