【问题标题】:htaccess redirect problems, Wordpress and static html site not redirecting properlyhtaccess 重定向问题,Wordpress 和静态 html 站点无法正确重定向
【发布时间】:2012-10-17 09:54:28
【问题描述】:

我在使用客户的网站时遇到问题。我为他创建了一个新的 Wordpress 网站,现在我遇到了 htaccess 重定向问题。

在我在服务器上安装 Wordpress 之前,有两个静态的基本 HTML 站点。 public_html 根目录中的一个使用主域,而子文件夹中的一个完全不同的子站点具有将子域引导到该文件夹​​的 htaccess 重写规则。

现在 Wordpress 搞乱了重定向。 Wordpress 当然对原始的 htaccess 文件进行了修改。除此之外,客户还必须更改托管服务提供商的服务器以获取更新的 php 版本,因此我不得不从头开始编写 htaccess 文件。

这是当前的 htaccess 文件:

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

# END WordPress

RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?subdomainurl.com$ [NC]
RewriteCond %{REQUEST_URI} !^/subdomainfolder/
RewriteRule ^(.*)$ subdomainfolder/$1 [L]

Wordpress 安装在名为 www 的文件夹中,并且正在重写 url,它运行良好。但是我遇到了子域的问题。在上面的代码中,我用 subdomainurl.com 替换了子域 url,该站点位于 public_html/subdomainfolder/。

现在,当我键入 www.subdomainurl.com 时,重定向工作正常,该站点就会显示出来。但是输入的 www.subdomainurl.index.html 没有。它必须写成www.subdomainurl.com/subdomainfolder/index.html,所以我显然没有写重定向权,还添加了子域文件夹。我试图与那个 htaccess 打成一片,但做不到。每次我尝试更改某些内容时,我都会在主域的 Wordpress 站点中收到 404。

目前这些工作: www.maindomain.com/subdomainfolder/index.html www.subdomainurl.com/subdomainfolder/index.html

这没有,我正在尝试这样做: www.subdomainurl.com/index.html

我不是重定向专家,非常感谢任何帮助。

编辑/插件:

这是来自旧服务器的旧代码,将子域重定向到子文件夹并重写了 url,它不再起作用,所以我放弃了它。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?subdomainurl.com$ [NC]
RewriteCond %{REQUEST_URI} !^/subdomainfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdomainfolder/$1
RewriteCond %{HTTP_HOST} ^(www.)?subdomainurl.com$ [NC]
RewriteRule ^(/)?$ subdomainfolder/index.html [L]

【问题讨论】:

  • 所以简而言之,我只需要从这个 htaccess-file 中的最终 url 中删除文件夹名称。从 www.subdomainurl.com/subdomainfolder/index.html 到 www.subdomainurl.com/index.html

标签: wordpress .htaccess mod-rewrite


【解决方案1】:

我在 htaccess 文件中没有看到仅针对子域和主域的条目。

【讨论】:

  • 什么意思?目前有两个域指向同一个虚拟主机空间。 .htaccess 中提到了第二个,而第一个没有提到,因为它们都默认由提供者定向到 web 空间根目录,并且文件夹重定向必须由 .htaccess 完成。
【解决方案2】:

目前我正在使用此代码

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

END WordPress

RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?subdomainurl.com$ [NC]
RewriteCond %{REQUEST_URI} !subdomainfolder
RewriteRule ^(.*)$ subdomainfolder$1

这会将整个二级域 (subdomainurl.com) 加载为 www.subdomainurl.com/subdomainfolder 并且它的工作方式是这样的 (www.subdomainurl.com/subdomainfolder/index.html, www.subdomainurl.com/subdomainfolder/work. html 等),但这仍然不是客户真正想要的。我仍然需要通过htaccess从url中删除子域文件夹部分,到目前为止我还没有成功。我想我在代码的最后一行没有正确理解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多