.htaccess 是否将域重定向到其他域子目录但在地址栏中显示第一个域?

sy5wg1nm  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(108)

我想将“www.example.com“重定向abc.com到“xyz.com/abc“,但仍然abc.com在浏览器的地址栏中显示“www.example.com“。据我所知,您将使用重写规则来实现这一点。
我拥有两个域和两个网页都在同一服务器上。
这是一个ionos的网络服务器。网站本身位于
/clickandbuilds/mywebsite(假设这是“xyz.com“)
现在这个网站上有一个子页面(“xyz.com/my-landing-page“)
也可以通过其自己的域(例如“abc.com“)访问
现在我使用一个简单的http重定向和所有的请求“abc.com得到重定向到“xyz.com/my-landing-page“。这正是我想要的,但我不想显示登陆页面的网址,但顶级域名(xyz)。
这种情况会是什么样子?
htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>
AddHandler x-mapp-php5.5  .php
# BEGIN rlrssslReallySimpleSSL rsssl_version[3.3.5]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteCond %{REQUEST_URI} !wp-content\/cache\/(all|wpfc-mobile-cache)
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
tzcvj98z

tzcvj98z1#

你有两个明显的选择,哪一个更适合你取决于具体情况:
1.内部重写策略:
你需要注意重写模块实际上是加载到http服务器上的,然后你可以实现这个规则:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^abc\.com$
RewriteCond %{REQUEST_URI} !^/abc
RewriteRule ^ /abc%{REQUEST_URI} [QSA,END]

这种方法可以在实际http服务器的主机配置中实现(这应该是首选),或者在分布式配置文件(.“htaccess”)中实现,以防您 * 没有 * 访问真实的配置的权限(读取:如果您使用的是廉价的托管服务提供商)。
1.内部代理策略:
您可以直接使用代理模块,而不使用重写模块:

ProxyPass / https://example.com/abc/
ProxyPassReverse / https://example.com/abc/

然而,这需要在实际的http服务器的主机配置中实现,所以你需要访问它。
使用重写模块(在内部使用代理模块)也可以实现相同的效果。这将允许使用分布式配置文件(“.htaccess”)来实现此方法:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^abc\.com$
RewriteCond %{REQUEST_URI} !^/abc
RewriteRule ^ https://example.com/abc%{REQUEST_URI} [P]

这两个基于代理的选项都有一个缺点,即性能是一个问题,因为您需要为每个传入请求提供一个完整的附加内部http请求。
一般来说,出于性能原因,第一种方法更有意义。但是,这必须得到应用程序逻辑的支持:这只在你的应用程序使用相对引用(“链接”)时才起作用。2如果它使用绝对URL而你不能改变它,你就需要深入到第二种方法。

相关问题