htaccess子域脚本重定向

发布于 2024-11-03 12:55:30 字数 1145 浏览 2 评论 0原文

我在理解 htaccess 重定向的工作原理时遇到问题:

我可以执行后台重定向,以便用户看到 [subdomain].mydomain.com/?p1=v1...,但服务器提供mydomain.com/?sid=[subdomain]&p1=v1... 没有实际的重定向,只有服务器端。

这是我到目前为止所拥有的,它不起作用:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^([^./]+)\.localhost\.com/(.+) [NC]
RewriteRule (.+) localhost.com/index.php?supplier=$1&$2 [L]

我没有改变任何东西。

编辑

我工作到一半了:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^([^./]+)\.localhost\.com$ [NC]
RewriteRule /(.+)$ http://localhost\.com/eshop/?supplier=%1 [QSA,P]

现在我收到一个很好的禁止警告,如果我删除 P 标志,它将重定向,因此 URL 显示 http://localhost.com/eshop/ ?supplier=[subdomain]&p1=v1... 就像它应该的那样,但用户仍然必须看到 http://[subdomain].localhost.com/eshop/?p1=v1。 ..,现在如何删除该禁止部分...

(请注意,我的网站实际上位于 www 下的文件夹中,但 eshop 部分将会消失)。

编辑2

它可以工作,所以正如clmarquart所说我需要mod_proxy。在 WAMP 上,您必须通过单击托盘图标 -> Apache -> Apache 模块来启用它,我启用了 proxy_module 和 proxy_http_module,无论它们是什么。

I'm having problems understanding how htaccess redirects work:

Can I do a background redirect, so that the user sees [subdomain].mydomain.com/?p1=v1..., but the server delivers mydomain.com/?sid=[subdomain]&p1=v1... without actual redirection, only server side.

This is what I have so far, it doesn't work:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^([^./]+)\.localhost\.com/(.+) [NC]
RewriteRule (.+) localhost.com/index.php?supplier=$1&$2 [L]

I doesn't change anything.

Edit

I got this halfway working:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^([^./]+)\.localhost\.com$ [NC]
RewriteRule /(.+)$ http://localhost\.com/eshop/?supplier=%1 [QSA,P]

Now I get a nice forbidden warning, if I remove the P flag it'll redirect, so the URL shows http://localhost.com/eshop/?supplier=[subdomain]&p1=v1... like it should, but the user must still see http://[subdomain].localhost.com/eshop/?p1=v1..., now how the remove that forbidden part...

(Notice my website is actually in a folder under www, but the eshop part will go away).

EDIT 2

IT WORKS, so as clmarquart said I needed mod_proxy. On WAMP you have to enable it by clicking on the tray icon->Apache->Apache modules and I enabled proxy_module and proxy_http_module, whatever they are.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

莫言歌 2024-11-10 12:55:30

使用“P”标志强制使用内部代理。使用代理模块时,RewriteURL 目标必须是完整 URL。使用“%1”到“%9”作为从 RewriteCond 表达式捕获的数据,使用“$1”到“$9”作为从 RewriteRule 表达式捕获的数据。

以下应该可以更好地工作(尽管未经测试)

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^([^./]+)\.localhost\.com$ [NC]
RewriteRule (.+) http://localhost.com/index.php?supplier=%1&$1 [L,P]

Use the "P" flag to force use of the internal proxy. The RewriteURL target must be a full URL when using the proxy module. Use "%1" to "%9" as the captured data from the RewriteCond expression, and "$1" to "$9" for the captured data from the RewriteRule expression.

The following should work better (not tested though)

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^([^./]+)\.localhost\.com$ [NC]
RewriteRule (.+) http://localhost.com/index.php?supplier=%1&$1 [L,P]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文