【发布时间】: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