【问题标题】:WordPress: .htaccess E8 redirect with permalinks. conditional redirect?WordPress:.htaccess E8 使用永久链接重定向。条件重定向?
【发布时间】:2014-05-06 10:36:39
【问题描述】:

在 WordPress 中,我通过永久链接将页面 URL 设置为帖子名称。问题是我想将所有 Internet Explorer 8 页面重定向到一个名为 ie/ 的页面。问题是有 2 个.htaccess 重定向。我已经挖掘并发现了大量 Internet Explorer 8 重定向,但没有条件满足我的需求。

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "MSIE [6-8]" [NC]
RewriteRule ^(.*)$ http://website.com/ie [R=301,L]

# 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

【问题讨论】:

  • “我已经挖掘并发现了大量 Internet Explorer 8 重定向,但没有条件满足我的需求。”这是什么意思?它似乎可以作为处理此问题的有效方式被接受:stackoverflow.com/questions/12666684/…
  • 是的,我找到了那个帖子,并将它添加到我的 .htaccess 文件的开头。但在此之下,有一个 wordpress 重写,可以重命名每一页。我相信存在冲突,因为在 IE8 中我收到重定向错误“此网页有重定向循环。”
  • 好的,有道理。看我的回答。我绝对不是 100% 对此有信心,但我相信我走在正确的轨道上。也看看这个:stackoverflow.com/questions/1478993/…

标签: wordpress .htaccess mod-rewrite redirect internet-explorer-8


【解决方案1】:

好的,既然你已经解释了情况,试试这个。这个想法是,如果HTTP_USER_AGENT 不是MSIE [6-8],那么它将转到标准的 WordPress 控制器。但是如果HTTP_USER_AGENTMSIE [6-8] 那么它会转到http://website.com/ie

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_USER_AGENT} !"MSIE [6-8]" [NC]
RewriteRule . /index.php [L]
RewriteCond %{HTTP_USER_AGENT} "MSIE [6-8]" [NC]
RewriteRule ^(.*)$ http://website.com/ie [R=301,L]
</IfModule>
# END WordPress

或者尝试像这样交换这些条件的顺序:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_USER_AGENT} "MSIE [6-8]" [NC]
RewriteRule ^(.*)$ http://website.com/ie [R=301,L]
RewriteCond %{HTTP_USER_AGENT} !"MSIE [6-8]" [NC]
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

但我不能保证这会起作用,因为它对于我无法访问的浏览器和服务器设置是特殊的。

另外,我相信这条线:

RewriteRule ^(.*)$ http://website.com/ie [R=301,L]

可以改成这样:

RewriteRule ^(.*)$ /ie [R=301,L]

【讨论】:

  • 感谢您的回复!这绝对是我在条件重写语句方面的想法。唯一的问题是我收到 500 错误“内部服务器错误”。我不确定我还能提供哪些其他信息来帮助调整答案
  • @TechyDude 我认为部分问题是您想强制页面顶部ie/,但通过.htaccess 进行此操作,它已经将所有流量路由到index.php。所以有可能出现重定向循环。也许更好的解决方案是不理会.htaccess,而是在 WordPress 模板中执行 PHP 中的逻辑?
  • 我认为如果重定向发生在服务器开始读取任何文件 wordpress 文件之前,它的加载时间会更快,但我愿意接受这个选项。我尝试将 php 重定向添加为 wp 操作,但没有成功。不管你帮助我更好地理解 htaccess,谢谢!
  • @TechyDude 酷!此外,您在考虑服务器速度问题。在这种情况下,在 PHP 中执行此操作并不是什么大不了的事。你现在可能不明白如何用 PHP 来做,但是网上有很多例子,也许还有一个 WordPress 插件可以做这样的事情。
猜你喜欢
  • 1970-01-01
  • 2013-04-25
  • 2013-08-14
  • 2016-02-11
  • 2017-12-20
  • 2015-12-04
  • 2015-05-04
  • 1970-01-01
相关资源
最近更新 更多