.htaccess RewriteRule 和 RewriteCond
.htaccess RewriteRule and RewriteCond
我已经为这个问题苦苦挣扎了几个小时。
基本上我在
中有我网站的新版本
var/www/mynewsite/public
我的 www/ 文件夹中有一个指向这样的符号链接
www/v2_legacy -> /d1/v2_legacy/
现在,我需要将访问 www.mysite.com 的任何人重定向到 www.mysite.com/mynewsite/public/
但我还需要保留一些旧链接,因此,访问 www.mysite。com/clients/whatever 应该将用户重定向到 www.mysite.com/v2_legacy/clients/whatever。除了 "clients" 文件夹外,我还会有另外两个文件夹。
这是我的 .htaccess,位于 www/ 文件夹中:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^clients/(.*)$ v2_legacy/clients/ [L]
RewriteCond %{REQUEST_URI} !^v2_legacy/(.*)$
RewriteRule ^(.*)$ mynewsite/public/ [L]
我已经尝试了这个文件的许多变体,但仍然无法获得适当的行为。
使用上面的 htaccess 文件,访问 www.mysite.com 将正确重定向,但访问 www.mysite.com/clients/somestuff 则不会。但是,如果我注释掉最后一个 RewriteCond 和 RewriteRule,访问 www.mysite.com/clients/somestuff 将正常工作,但访问 www.mysite.com,显然将无法工作。
%{REQUEST_URI}
变量始终以斜杠开头。因此,将它与 ^something
匹配将始终为假(并且否定使它始终为真)。除此之外,您还需要防止无限循环的发生,因为 ^(.*)$
也匹配 mynewsite/public/...
。
你最终会得到类似以下内容的结果:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^clients/(.*)$ v2_legacy/clients/ [L]
RewriteCond %{REQUEST_URI} !^/(v2_legacy|mynewsite)
RewriteRule ^(.*)$ mynewsite/public/ [L]
我已经为这个问题苦苦挣扎了几个小时。 基本上我在
中有我网站的新版本var/www/mynewsite/public
我的 www/ 文件夹中有一个指向这样的符号链接
www/v2_legacy -> /d1/v2_legacy/
现在,我需要将访问 www.mysite.com 的任何人重定向到 www.mysite.com/mynewsite/public/
但我还需要保留一些旧链接,因此,访问 www.mysite。com/clients/whatever 应该将用户重定向到 www.mysite.com/v2_legacy/clients/whatever。除了 "clients" 文件夹外,我还会有另外两个文件夹。
这是我的 .htaccess,位于 www/ 文件夹中:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^clients/(.*)$ v2_legacy/clients/ [L]
RewriteCond %{REQUEST_URI} !^v2_legacy/(.*)$
RewriteRule ^(.*)$ mynewsite/public/ [L]
我已经尝试了这个文件的许多变体,但仍然无法获得适当的行为。
使用上面的 htaccess 文件,访问 www.mysite.com 将正确重定向,但访问 www.mysite.com/clients/somestuff 则不会。但是,如果我注释掉最后一个 RewriteCond 和 RewriteRule,访问 www.mysite.com/clients/somestuff 将正常工作,但访问 www.mysite.com,显然将无法工作。
%{REQUEST_URI}
变量始终以斜杠开头。因此,将它与 ^something
匹配将始终为假(并且否定使它始终为真)。除此之外,您还需要防止无限循环的发生,因为 ^(.*)$
也匹配 mynewsite/public/...
。
你最终会得到类似以下内容的结果:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^clients/(.*)$ v2_legacy/clients/ [L]
RewriteCond %{REQUEST_URI} !^/(v2_legacy|mynewsite)
RewriteRule ^(.*)$ mynewsite/public/ [L]