【问题标题】:WordPress blog on subdirectory .htaccess redirectWordPress 博客上的子目录 .htaccess 重定向
【发布时间】:2014-04-05 20:45:54
【问题描述】:

我有一个根级别的 Joomla 网站,以及 /blog 上的 wordpress 博客。

在根级的.htaccess里面,我需要实现非www到www的重定向,比如:

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

但是,这会在访问 www.example.com/blog 时导致问题(末尾没有结尾的“/”)。我被重定向到http://www.example.com/cgi-bin/php53.cgi/blog/index.php

php53.cgi 文件用于打开 PHP 5.3 版本。这是该文件的内容:

#!/bin/sh
export PHP_FCGI_CHILDREN=3
exec /hsphere/shared/php53/bin/php-cgi

这是 /blog 目录中的 .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
# END WordPress

【问题讨论】:

    标签: wordpress apache .htaccess mod-rewrite joomla


    【解决方案1】:

    您需要在.htaccess 上将非www 重定向到www,因为后面的.htaccess 将覆盖您的Joomla .htaccess 规则。

    RewriteCond %{HTTP_HOST} ^example.com$ [NC]
    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

    对于不以/ 结尾的博客,您可以在您的Joomla .htaccess 上尝试此规则:

    # Redirect /blog to /blog/
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+blog([^\s]+) [NC]
    RewriteRule ^blog$ /blog/? [R=301,L]
    

    注意:我使用 %{THE_REQUEST} 是因为我不知道您对 Joomla .htaccess 有什么规则,因此上述方法很可能适用于所有情况。

    但您也可以以更简单的方式进行操作,但这并不适用于所有情况,具体取决于您拥有的其他规则:

    # Redirect /blog to /blog/
    RewriteRule ^blog$ /blog/? [R=301,L]
    

    【讨论】:

    • 我尝试了您的建议并使其正常工作。显然我只需要在 /blog/.htaccess 中添加非 www 到 www 重定向。
    • @GeorgeC 很高兴它对你有用;)我认为这是你的问题,但以防万一我还添加了其他方法。
    猜你喜欢
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2017-07-01
    • 1970-01-01
    相关资源
    最近更新 更多