2011-10-05 67 views
0

如果頁面沒有指定擴展名而沒有將用戶實際重定向到實際的URL,是否有一種通用的方式將頁面指向另一頁?如何在Apache中的URL上沒有文件擴展名的情況下執行重定向

e.g. 
http://www.mydomain.com/ points to http://www.mydomain.com/public 
http://www.mydomain.com/auth points to http://www.mydomain.com/public/auth 
http://www.mydomain.com/auth/process points to http://www.mydomain.com/public/auth/process 
http://www.mydomain.com/auth/process/done points to http://www.mydomain.com/public/auth/process/done 

回答

2

也許這就是你需要:

RewriteCond %{REQUEST_URI} !^/(public)(.*)$ [NC] 
RewriteRule ^(.*)$ /public/$1 [L] 

編輯:

添加此的RewriteCond檢查的擴展名:

RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
+0

對不起,沒有閱讀,起初只有在沒有擴展的情況下才想'重定向'。 – Fabian

+0

嗨,感謝您的回覆。我會嘗試一下,並在幾個方面回覆你。順便說一句,你會如此善良的發佈規則的確切順序?對不起,對於htaccess來說真的很陌生。 –

+0

不客氣!請使用以下命令: RewriteCond%{REQUEST_URI}!(\。[a-zA-Z0-9] {1,5} |/rewriteCond%{REQUEST_URI}!^ /(public)(。*)$ [NC] )$ RewriteRule ^(。*)$/public/$ 1 [L] 嘗試你的規則,你可以用[R]代替[L],這樣你就可以看到發生了什麼! – Fabian

0

是的,你可以通過重寫規則做,但你應該知道一些關於URL或有關防止rewritting其他URL一定的條件。

爲您指定的URL例子重寫規則是:

RewriteRule ^auth/(.*)$ public/auth/$1 [L] 
RewriteRule ^$ public [L] 
+0

只適用於驗證頁面。我正在尋找更通用的東西 –

+0

@Jourour Estrella我根據你的編輯編輯了答案。但如果你想要更多,你應該指定它們。 – undone

相關問題