我有一个代理我已经用PHP编写了一段时间。
现在,在我的服务器上请求www.mysite.com/proxy/?folder/page.html
之类的网址会返回www.theirsite.com/folder/page.html
页面。
我基本上让我的index.php
文件使用/proxy/?
之后的所有内容作为www.theirsite.com
的请求URI。任何图像都会复制到文件夹/proxy/images/
,并且<img>
标记的src属性会相应更改。这一切都很有效。
现在我想更改我的脚本,以便我不再需要?
。但是,网址www.mysite.com/proxy/folder/page.html
会导致向page.html
发送HTTP请求,该请求在我的服务器上不存在。
这不是我想要的。我需要加载index.php
,因此它可以在www.theirsite.com/folder/page.html
返回页面。为了实现这一点,我想我需要使用Apache的mod_rewrite,它正在使用我的WordPress安装。
我的.htaccess文件中需要什么才能正确执行此操作,同时仍允许访问/proxy/images/
目录中存在的文件?这会影响$_SERVER['REQUEST_URI']
吗?
答案 0 :(得分:0)
RewriteEngine on
RewriteRule ^/$ /index.php [R]
答案 1 :(得分:0)
好吧,我按照我想要的方式工作了。这是我的.htaccess文件的全部内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /proxy/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /proxy/index.php [L]
</IfModule>
现在,对于网址www.mysite.com/proxy/folder/page.html
,我会加载index.php
,$_SERVER['REQUEST_URI']
会返回/proxy/folder/page.html
。实际存在于/proxy/
文件夹或任何子文件夹中的文件不会重写为index.php
,这就是我想要的。