将documentroot重定向到conf apache或.htccess中的另一个文件夹
你好 我想在请求子目录时重写url 当用户请求 172.0.0.1/url 我想重写以使此url指向 172.0.0.1/url/url 或者documentroot位于/var/www/html/url/url中,请指出 172.0.0.1/url将documentroot重定向到conf apache或.htccess中的另一个文件夹,apache,http,mod-rewrite,url-rewriting,Apache,Http,Mod Rewrite,Url Rewriting,你好 我想在请求子目录时重写url 当用户请求 172.0.0.1/url 我想重写以使此url指向 172.0.0.1/url/url 或者documentroot位于/var/www/html/url/url中,请指出 172.0.0.1/url 您可以使用.htaccess将/url重定向到/url/url 只需在/var/www/html/处创建.htaccess文件,其中包含以下内容: RewriteEngine on RewriteRule ^/?url/(.*)$ /url/url
您可以使用
.htaccess
将/url
重定向到/url/url
只需在/var/www/html/
处创建.htaccess文件,其中包含以下内容:
RewriteEngine on
RewriteRule ^/?url/(.*)$ /url/url/$1 [R,L]
这将重定向位于/url
的所有传入请求,并将它们重定向到/url/url
但您无法将来自
/url/url
的请求重定向到/url
,因为我们已经在/url
重定向请求,这将导致catch 22,浏览器将在/url
和/url/url
之间来回重定向。这里的技巧是避免创建重写和重定向循环。您可以将此代码放在根文件夹htaccess中
RewriteEngine On
# Redirect /url/url/xxx to /url/xxx
RewriteCond %{THE_REQUEST} \s/(url)/url/(.*)\s [NC]
RewriteRule ^ /%1/%2 [R=301,L]
# Internally rewrite back /url/xxx to /url/url/xxx
RewriteRule ^(url)/((?!url/).*)$ /$1/$1/$2 [L]
这里有两句话。首先,您的规则创建一个重定向循环。然后,实际上可以在没有循环的情况下同时在内部重写和重定向。更多细节请参见我的答案