要重寫(內部重定向)/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