停放的域重定向到子文件夹

FMa*_*008 3 .htaccess mod-rewrite

我有2个域名:

  • maindomain.com
  • parkeddomain.com

在拥有parkeddomain.com域名之前,我的意思.htaccess是:

RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
Run Code Online (Sandbox Code Playgroud)

现在我有了新域名,我想在子文件夹中重定向访问:/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]
Run Code Online (Sandbox Code Playgroud)

但由于一个奇怪的原因,[L]公园的条款RewriteRule生成一个内部500 error,我没有访问日志文件:(

有解决方案吗 谢谢 :)

Laz*_*One 8

您最有可能出现500错误,因为您的规则进入了重写循环.请尝试此规则:

RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.maindomain.com/park/$1 [R=302,L]
Run Code Online (Sandbox Code Playgroud)
  1. 它是302时间重定向(因为您的域名已停放,有一天您可能决定实际开始使用它).但如果你真的想让它能够永久重定向301

  2. 如果用户来自parkeddomain.com(例如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]
Run Code Online (Sandbox Code Playgroud)

更新 此规则允许重写甚至这种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]
Run Code Online (Sandbox Code Playgroud)

请注意:因为它使用%{ENV:REDIRECT_STATUS}可能无法在您的主机上工作(这用于检测重写循环,因此规则只重写一次).