1

我正在尝试在serve_each_drive.phpurl 下做一些工作drive_for_london/?pid=12

这是我的.htaccess

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^drive_for_(.*)/$ http://web228.sydney.webhoster.ag/soputnik/serve_each_drive.php [L]

我想保留网址drive_for_london/?pid=12并在后台完成工作。但上面的规则将我重定向到serve_each_drive.php. 网址正在变成:

http://web228.sydney.webhoster.ag/soputnik/serve_each_drive.php

为什么?请帮忙

4

1 回答 1

1

是的,如果您在目标中有完整的 URL,那么目标 URL 将在外部重定向(因此也会在您的浏览器中更改)是正确的 mod_rewrite 行为。由于您的目标 URL 以开头,http://因此这种重定向正在发生。

为了防止这种行为,您需要:

  1. 确保您使用的 URL 没有域(网络服务器内部)
  2. 确保不要使用 R 标志(你已经在这样做了)

所以用这个改变你的代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^pid=.+ [NC]
RewriteRule ^drive_for_(.*?)/$ /soputnik/serve_each_drive.php [L,NC]

还要记住,上面的代码假定您页面上的 URL 是:http://web228.sydney.webhoster.ag/drive_for_london/?pid=12并且将在内部转发到:http://web228.sydney.webhoster.ag/soputnik/serve_each_drive.php?pid=12

于 2013-05-17T11:52:22.067 回答