LiteSpeed(或 apache)重写以从 mirror.com 中隐藏子文件夹 domain.com 和 www.domain.com
LiteSpeed (or apache) rewrite to hide SUBFOLDERS domain.com and www.domain.com from mirror.com
我用httrack镜像了一个网页(wget没有多连接)
问题是这个页面同时在两个域中有资源:
- domain.com
- www.domain.com
所以,我的方案是根文件夹 /var/www/mirror/ 和子文件夹 /var/www/mirror/domain.com 和 /var/www/mirror/www.domain.com/
当您在 mirror.com 中加载镜像页面的索引时,只要您点击任何内容(请参阅最后的 postdata),您看到的 url 就是 https://mirror.com/domain.com/ but also you're redirected to https://mirror.com/www.domain.com/
当您使用以下代码在 /var/www/mirror/index.html(转到 mirror.com)中加载索引时,我设法隐藏了其中一个子文件夹:
RewriteCond %{REQUEST_URI} !^/domain.com/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain.com/
RewriteRule ^(/)?$ domain.com/index.html [L]
但是当我为第二个子域 (www.) 添加相同内容时:
RewriteCond %{REQUEST_URI} !^/domain.com/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain.com/
RewriteRule ^(/)?$ domain.com/index.html [L]
RewriteRule ^(.*)$ /www.domain.com/
RewriteRule ^(/)?$ www.domain.com/index.html [L]
分页符(加载样式表、资源等时出错)。
我试过只在最后留下 [L],在最后一个 RewriteRule 中使用 domain.com,在最后一个 RewriteRule 中使用 www.domain.com,没有任何效果。
PS:在真实页面中,只有索引与domain.com一起工作,只要你点击任何link,您将永远被重定向到 www.domain.com 浏览,但我希望 我的镜像总是 domain.com ,甚至当我的镜像资源 linking 到 /var/www/mirror/www.domain.com 子文件夹时,如果可能的话。
编辑以添加一些示例:
- 当我加载 mirror.com 时,我希望索引为 mirror.com/ 而不是其他(这在我的第一个 .htaccess 示例中工作正常)
- 当我点击任何 link 时,镜像内容将我发送到 mirror.com/www.domain.com/someContent.html, 但我想在浏览器的 url 镜像中看到.com/someContent.html
- 如果我加载一些真正的子文件夹,即。 mirror.com/www.domain.com/tags/someContent.html,我想在url镜像里看到。 com/tags/someContent.html
Apache mod_rewite 无法查看页面内容,即它无法更改 URL 页面中包含的链接。您可以尝试使用 Apache mod_proxy_html,它可以修改页面中包含的 URL 链接。请参阅下文了解更多信息。
我用httrack镜像了一个网页(wget没有多连接)
问题是这个页面同时在两个域中有资源:
- domain.com
- www.domain.com
所以,我的方案是根文件夹 /var/www/mirror/ 和子文件夹 /var/www/mirror/domain.com 和 /var/www/mirror/www.domain.com/
当您在 mirror.com 中加载镜像页面的索引时,只要您点击任何内容(请参阅最后的 postdata),您看到的 url 就是 https://mirror.com/domain.com/ but also you're redirected to https://mirror.com/www.domain.com/
当您使用以下代码在 /var/www/mirror/index.html(转到 mirror.com)中加载索引时,我设法隐藏了其中一个子文件夹:
RewriteCond %{REQUEST_URI} !^/domain.com/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain.com/
RewriteRule ^(/)?$ domain.com/index.html [L]
但是当我为第二个子域 (www.) 添加相同内容时:
RewriteCond %{REQUEST_URI} !^/domain.com/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain.com/
RewriteRule ^(/)?$ domain.com/index.html [L]
RewriteRule ^(.*)$ /www.domain.com/
RewriteRule ^(/)?$ www.domain.com/index.html [L]
分页符(加载样式表、资源等时出错)。
我试过只在最后留下 [L],在最后一个 RewriteRule 中使用 domain.com,在最后一个 RewriteRule 中使用 www.domain.com,没有任何效果。
PS:在真实页面中,只有索引与domain.com一起工作,只要你点击任何link,您将永远被重定向到 www.domain.com 浏览,但我希望 我的镜像总是 domain.com ,甚至当我的镜像资源 linking 到 /var/www/mirror/www.domain.com 子文件夹时,如果可能的话。
编辑以添加一些示例:
- 当我加载 mirror.com 时,我希望索引为 mirror.com/ 而不是其他(这在我的第一个 .htaccess 示例中工作正常)
- 当我点击任何 link 时,镜像内容将我发送到 mirror.com/www.domain.com/someContent.html, 但我想在浏览器的 url 镜像中看到.com/someContent.html
- 如果我加载一些真正的子文件夹,即。 mirror.com/www.domain.com/tags/someContent.html,我想在url镜像里看到。 com/tags/someContent.html
Apache mod_rewite 无法查看页面内容,即它无法更改 URL 页面中包含的链接。您可以尝试使用 Apache mod_proxy_html,它可以修改页面中包含的 URL 链接。请参阅下文了解更多信息。