Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 重写基于HTTP\U REFERER重定向到子目录的规则_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Apache 重写基于HTTP\U REFERER重定向到子目录的规则

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

我遇到一个问题,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]
然而。。。当我将文件保存在服务器的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衬衫”或其他什么的时候,我会很容易地发现这一点。旗帜之间有一个空格><就是这样!谢谢你,哈哈。