Apache 重写基于HTTP\U REFERER重定向到子目录的规则
我遇到一个问题,wordpress安装从Apache 重写基于HTTP\U REFERER重定向到子目录的规则,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我遇到一个问题,wordpress安装从/(根目录)移动到/beta/(子目录)。我让它工作得很好,除了有一些页面链接链接到,例如,/my page,现在是404,我希望它重定向到/beta/my page。这些链接存在于/beta/(.*)路径上,因此我的想法是在主根路径中创建一个.htaccess规则,该规则将看到链接来自/beta/*,并简单地将用户重定向回正确的页面。这就是我到目前为止所做的: RewriteEngine On # `HTTP_REFERER` contains my b
/
(根目录)移动到/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]
然而。。。当我将文件保存在服务器的webroot中时,我遇到了一个500服务器错误配置类型的错误
例如:
如果用户使用的是/march beta/t-shirts
然后点击一个链接,链接到:/blue-t-shirts
(甚至/t-shirts/blue-ones
)
我想让
.htaccess
文件看到HTTP\u REFERER
包含/march beta
,并立即R=302
将它们发送到/march beta/blue-t恤
(或者/march beta/t恤/blue-one
,在第二种情况下).由于重写标志之间有空格,因此出现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]
哦,看在对数字的喜爱上。这真是太愚蠢了。谢谢你在前导斜杠上的注释,尽管当重写规则将我重定向到“三月betat衬衫”或其他什么的时候,我会很容易地发现这一点。旗帜之间有一个空格><就是这样!谢谢你,哈哈。