我有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]
但由于一个奇怪的原因,公园[L]
的{{1}}子句会生成内部RewriteRule
,而我无法访问日志文件:(
任何解决方案? 谢谢:))
答案 0 :(得分:8)
您最有可能发生500错误,因为您的规则进入了重写循环。请改用此规则:
RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.maindomain.com/park/$1 [R=302,L]
这是302时间重定向(因为您的域名已停放,有一天您可能决定实际开始使用它)。但是,如果你真的想让它成为301永久重定向
如果用户来自parkeddomain.com(例如http://www.parkeddomain.com/hello
),该规则将有效。
如果您不想重定向(因此浏览器中的网址仍然显示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]
<强>更新强>
此规则允许重写此类网址:parkeddomain.com/park/index.php
- &gt; /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}
,可能无法在您的托管上运行(这用于检测重写循环,因此规则只会被重写一次)。