我有 2 个域:
maindomain.com
parkeddomain.com
在拥有
parkeddomain.com
域之前,我的 .htaccess
是:RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
现在我有了新域,我想重定向子文件夹中的访问:
/park/
所以基本上,如果以下 URI 将显示完全相同的页面:http://www.maindomain.com/park/
http://www.parkeddomain.com/
我尝试制定
.htaccess
规则是:RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain.com$
RewriteRule ^(.*)$ /park/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
但是出于一个奇怪的原因,park
[L]
的 RewriteRule
子句生成了一个内部 500 error
,而我无权访问日志文件:(任何解决方案?
谢谢 :)
最佳答案
您有 500 错误很可能是因为您的规则进入了重写循环。试试这个规则:
RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.maindomain.com/park/$1 [R=302,L]
http://www.parkeddomain.com/hello
),则该规则将起作用。 如果您 不想重定向 (因此浏览器中的 URL 仍然显示
http://www.parkeddomain.com/hello
而不是 http://www.maindomain.com/park/hello
),请改用:RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/park/
RewriteRule ^(.*)$ /park/$1 [L]
更新
这条规则甚至允许重写这种 URL:
parkeddomain.com/park/index.php
-> /park/park/index.php
RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain\.com$ [NC]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{DOCUMENT_ROOT}/park/$1 -f
RewriteRule ^(.*)$ /park/$1 [L]
请注意: 因为它使用
%{ENV:REDIRECT_STATUS}
它 可能 在您的主机上不起作用(这用于检测重写循环,因此规则只重写一次)。关于.htaccess - 停放的域重定向到子文件夹,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6587402/