我已经安装了 WPML Wordpress 网站。我最近做了两件事:

  • 将HTTP仅移至仅HTTPS
  • http://domain.pl移至https://domain.xyz(英语)
  • http://domain.pl/pl移至https://domain.pl(波兰语)

  • 这样做是为了改善SEO。但是,尽管我使用以下方法就可以正常工作:
     # 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
    

    apache.conf的文件中的ServerName domain.xyz, ServerAlias domain.pl www.domain.pl等。我在互联网上以各种形式出现的大多数旧博客帖子都遇到了问题。例如:
  • 这个小条目http://domain.pl/email-address-policy/正确地重定向到https://domain.xyz/email-address-policy/
  • 这个小条目http://domain.pl/powershell-write-host没有。它只是转到https://domain.pl/powershell-write-host,它是404,仅此而已。

  • 看来最后/发挥了巨大作用。

    我计划将所有重定向以直接1到1的形式添加到新域中,但是由于它可以部分工作,所以我不会迷路……而且我不确定如何正确转换它们。

    编辑:

    我尝试了多个选项,即使是一个应该重写所有链接以/结尾的选项,它仍然失败。
    # 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
    

    另一个更新:
  • https://domain.xyz/url-is-here-正确工作
  • https://domain.xyz/url-is-here/-正确工作
  • https://domain.pl/url-is-here-不起作用,未转换为https://domain.xyz/url-is-here/
  • https://domain.pl/url-is-here/-正确转换为https://domain.xyz/url-is-here/

  • 因此,并非所有斜杠与非斜杠都无法正常工作。它更多地是关于指向旧域的某种翻译。

    我尝试使用重定向检查器来查看其工作原理(在正确的示例中),但是我无法从中获得任何意义。
  • http://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1的检查


  • http://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1/的检查


  • https://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1的检查



  • 我尝试的怪异选项越多。虽然RedirectChecker似乎正在显示一件事...浏览器的行为有所不同,并且不适用于第一个条目,反而立即导致404错误

    编辑:

    如果仅留下“Wordpress”数据,则为true:
  • http://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1
  • 完全一样获得404 http://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1
  • http://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1/获取https://evotec.xyz/hub/scripts/office365-addbulkemailaddressses-ps1/
  • https://evotec.pl/hub/scripts/office365-addbulkemailaddressses-ps1
  • 完全一样获得404

    只有当我使用正确/新域时,它才能正常工作,然后所有工作正常:
  • 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/

  • 我想如果我不能重定向它,我将保持原样并放弃。

    最佳答案

    我实际上已经通过使用适用于Wordpress的SEO Redirection Premium插件解决了该问题。

    wordpress - 缺少/时使用.htaccess重定向无法正常工作-LMLPHP

    无需/即可重定向断开的链接。在这种情况下,我是手动完成的,但是我正在尝试使用Regex以更全局的方式进行操作。只需要找到合适的一个。

    wordpress - 缺少/时使用.htaccess重定向无法正常工作-LMLPHP

    关于wordpress - 缺少/时使用.htaccess重定向无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38804539/

    10-15 13:11