FMa*_*008 3 .htaccess mod-rewrite
我有2个域名:
maindomain.comparkeddomain.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,我没有访问日志文件:(
有解决方案吗 谢谢 :)
您最有可能出现500错误,因为您的规则进入了重写循环.请尝试此规则:
RewriteCond %{HTTP_HOST} ^(www.)?parkeddomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.maindomain.com/park/$1 [R=302,L]
Run Code Online (Sandbox Code Playgroud)
它是302时间重定向(因为您的域名已停放,有一天您可能决定实际开始使用它).但如果你真的想让它能够永久重定向301
如果用户来自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}它可能无法在您的主机上工作(这用于检测重写循环,因此规则只重写一次).
| 归档时间: |
|
| 查看次数: |
9042 次 |
| 最近记录: |