我正在经历.htaccess的奇怪行为。
我正在写一个.htaccess规则来转换下面的网址:
我想转换以下网址(其中site
是可变的。)
www.xyz.com/domain/site
到
site.xyz.com/
请注意,/site
是在运行时生成的。 (由用户创建)
但我的规则不起作用。
我的代码
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !www.xyz.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).xyz.com [NC]
RewriteRule (.*) nono.html?sm=%2 [NC,QSA]
答案 0 :(得分:0)
您当前的规则似乎是"有点"与你在问题中提出的问题相反,但需要额外的扭曲。即。表单site.xyz.com/something
的URL将在内部重写为site.xyz.com/nono.html?sm=site
。 (?)
要重定向 www.xyz.com/domain/site
到site.xyz.com/
,正如您所说,那么您可以执行以下操作:
RewriteCond %{HTTP_HOST} ^www\.(xyz\.com)$ [NC]
RewriteRule ^domain/([^/]+)$ http://$1.%1/ [R=302,L]
如果您确定此功能正常,请将302
(临时)重定向更改为301
(永久)。或者禁用浏览器缓存进行测试。 (301
重定向会被浏览器缓存,因此可能会使测试出现问题。)
答案 1 :(得分:0)
我遇到了你的问题。
你的重写规则正好相反......
将此用于您的确切问题
它会起作用
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^(www\.)?xyz.com/domain/(.+)$(.*)
RewriteRule (.*) https://$1.xyz.com/ [L]