要重写(内部重定向)/myuserid/
到/myuserid/blogs/my_blog/
同时具有在位于/myuserid/
文件夹的.htaccess这个规则,使用这样的规则:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^$ blogs/my_blog/ [L]
如果添加略低于上面这条规则,你应该重写文章等,以及:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!blogs/my_blog/)(.+)$ blogs/my_blog/$1 [L]
以上规则将只重写不存在的网址(我认为这是一个正确的做法 - 如果你认为否则只是删除2条的RewriteCond线)。这意味着如果请求/myuserid/hello.png
且文件存在,则不会将其重写为/myuserid/blogs/my_blog/hello.png
。
在理论上可以这条规则组合成一个单一的一个(由(.*)
更换(.+)
),但由于一些奇怪的原因,它不工作(或工作不正常)在某些服务器上。在任何情况下 - 那就是:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!blogs/my_blog/)(.*)$ blogs/my_blog/$1 [L]
另外,我怎样才能得到它结束篇执着,等等,整个 网站?
这是一个非常具体的问题,不知道很多关于如何生成链接等的细节我不能给你一个明确的答案。
有可能使用某种ReverseProxy来完成这项工作 - 而不是仅仅重写使用内部代理的东西 - 它对用户来说是完全透明的(与重写相同),但应该能够修复链接从真实到漂亮的页面。不幸的是,我对这个特定主题的了解非常有限,无法给您提供任何实例。
1)你在哪里(哪个文件夹)打算放这样的.htaccess?我认为它会在'/ myuserid/.htaccess'中? 2)其他网址应该如何路由(例如'/ myuserid/blogs/my_blog/some-article' - 它应该如何重写?)3)'/ myuserid /' - 它是一个真实的物理文件夹..或者它也被重写了.htaccess(顶层)? 4)你真的可以在该服务器上使用.htaccess和mod_rewrite吗?请你仔细检查一下。 – LazyOne
我可以在此服务器上使用.htaccess。我通过一个简单的测试来验证。 /myuserid /是一个真正的文件夹,我将放置.htaccess。 我真的不确定网址是如何形成的,只要发布。静态页面是page_name.htm – Aaa
我的意思是 - 重写一个URL不是一个问题,但其余的呢? – LazyOne