【发布时间】:2014-12-11 20:49:08
【问题描述】:
假设我有这个www.example.com 网站结构:
/srv/http/
/srv/http/site/index.php
/srv/http/site/stuff.php
我希望发生以下重写/重定向:
www.example.com/index.php -> 重定向到 -> www.example.com/site/index.php -> 但用户看到了 -> www.example.com/index.php
www.example.com/stuff.php -> 重定向到 -> www.example.com/site/stuff.php -> 但用户看到了 -> www.example.com/stuff.php
一般来说,www.example.com/ 之后的所有内容都会重定向到 www.example.com/site/。但用户在浏览器中看到的是原始 URL。
我在互联网上四处寻找,但没有弄清楚在这种特殊情况下该使用什么。
我尝试重写所有内容:
RewriteEngine On
RewriteRule ^$ /site [L]
但index.php 消失了,www.example.com/site/ 显示给用户。
如何使用.htaccess 来解决这个问题?
【问题讨论】:
-
为什么不把 DocumentRoot 移到 .../site ?
-
以下任何答案对您有用吗?
-
这很奇怪。如果您没有使用 [R] 标志,则不应重定向浏览器,因此不应向用户显示
www.example.com/site/。我很想在你重写之前考虑其他东西,比如ErrorDocument 404规则 - 因为 /index.php 和 /stuff.php 在那个位置并不真正存在 -
嗯,更正我之前的评论:如果你没有使用 [R] 标志,但你的 RewriteUrl 返回一个完整的 url,浏览器也会被重定向。
标签: apache .htaccess mod-rewrite redirect