【问题标题】:RewriteRule to remove subfolder from all requestsRewriteRule 从所有请求中删除子文件夹
【发布时间】:2016-09-03 09:51:06
【问题描述】:

我已将我的 WordPress 网站移至新域并从子文件夹移至域根目录。我在旧域的 htaccess 中进行了 301 重定向,因此那里的所有请求都被重定向到新域的完整路径。 htaccess 除了重写域之外什么都不做,保持完整的请求路径不变。

在我的新域中,对旧子文件夹的请求通过删除子文件夹名称重定向到域根目录。我还尝试捕获子文件夹之后的路径,并保留它。但是,没有子文件夹的重定向会一直以域的根目录结尾。

因此,例如,floriskleijne.nl/site 会重定向到 floriskleijne.com/site,而后者又会重定向到 floriskleijne.com。到目前为止,一切都很好。但是 floriskleijne.nl/site/about 会重定向到 floriskleijne.com/site/about,后者会重定向到 floriskleijne.com,而 /about 在某个地方会丢失。由于某种原因,捕获 /site 之后的路径不起作用。

另外,我正在努力解决我想要摆脱的子目录之一曾经被称为“wp”的事实。所以对于那个子目录,我需要一个规则来摆脱它,同时仍然能够访问 wp-admin 页面,即使它可能被请求带有或不带有斜杠。类似的挑战也适用于 site/ ,需要使用或不使用尾部斜杠来删除它,同时保持 sitemap.xml 可访问。

这是失败的 htaccess 文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>

# Setting up rewriting
RewriteEngine On
RewriteBase /

# Redirect HTTPS to HTTP (temporary until certificate becomes available)
RewriteCond %{HTTPS} on
RewriteRule (.*) http://www.floriskleijne.nl/$1 [R=301,L]

# Remove old subdirs /site/ and /wp/ from URL
RewriteRule ^wp/(.*) http://www.floriskleijne.nl/$1 [R=301,L]
RewriteRule ^site/(.*) http://www.floriskleijne.nl/$1 [R=301,L]

# WordPress rewrites
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

【问题讨论】:

  • 哦,没关系,我是个白痴。我输入 .nl 而不是 .com 作为重定向目标。难怪它不起作用。发生了一些链/循环重定向。将其更正为指向 .com,现在一切正常。

标签: wordpress .htaccess redirect mod-rewrite subdirectory


【解决方案1】:

问题不在于重写的逻辑,而在于重定向目标中的拼写错误。我正在重定向到 .nl,而我打算在 .com 域内重定向。因此,一旦我将 .nl 更改为 .com,上述 htaccess 文件就可以了。

【讨论】:

    猜你喜欢
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2021-05-17
    相关资源
    最近更新 更多