我有一个问题,wordpress安装从/
(根)移动到/beta/
(子目录)。我有它的工作很好,除了有一些页面链接链接到,例如,/my-page
现在是一个404,我希望它重定向到/beta/my-page
。这些链接在/beta/(.*)
路径上存在,所以我的想法是在主根路径中创建一个.htaccess
规则,该规则将看到来自/beta/*
的链接并简单地将用户重定向到正确的页面。这是我目前所看到的:
RewriteEngine On
# `HTTP_REFERER` contains my beta path...
RewriteCond %{HTTP_REFERER} /march-beta
# The current page is not *already* a `/march-beta` page (don't want an infinite redirect)
RewriteCond %{REQUEST_URI} !/march-beta
# Remap the entire path to be in the correct subdirectory
RewriteRule ^(.*)$ /march-beta$1 [R=302, L]
然而…当我将文件保存在服务器的web浏览器中时,我得到了500服务器配置错误的错误。
一个例子:
如果用户在/march-beta/t-shirts
上
并点击链接到:/blue-t-shirts
(甚至/t-shirts/blue-ones
)
我希望.htaccess
文件看到HTTP_REFERER
包含/march-beta
,并立即将R=302
转换为/march-beta/blue-t-shirts
(或/march-beta/t-shirts/blue-ones
,在第二种情况下)。
你得到一个500服务器错误,因为你的重写标志之间有一个空格。这个空格使mod_rewrite认为这些标志是[R=302,
,这使mod_rewrite非常困惑,并抛出一个错误。尝试删除空格:
RewriteRule ^(.*)$ /march-beta$1 [R=302,L]
另外,您可能需要在/march-beta
后面加一个斜杠,因为在htaccess文件中重写规则的URI去掉了前导斜杠:
RewriteRule ^(.*)$ /march-beta/$1 [R=302,L]