2012-02-05 86 views
0

我試圖使用.htaccess重寫URL並從URL中刪除擴展名.htm,.php和.html,並強制重定向, : http://mydomain.com/example.php會重定向到http://mydomain.com/example http://mydomain.com/example-two.html會重定向到http://mydomain.com/example-two http://mydomain.com/example也將沒有任何問題的工作 http://mydomain.com/example-two.txt(用於刷新一些通過AJAX的內容)將被重定向到http://mydomain.com/example-two隱藏文件擴展名並強制使用.htaccess強制重定向到無擴展名的網址

嘗試和努力後到處閱讀,th Ë最近我去了這一點:

Options +FollowSymlinks 
RewriteEngine On 

RewriteRule ^([a-zA-Z/-]+)\.(htm|html|php)$ http://mydomain.com/$1 [R=301] 

但它仍然給了我一個300 Multilple選擇的消息,也當沒有多項選擇(的index.html)

我也想嘗試第一次檢查在服務器上的文件的存在,之前重命名文件,並在文件丟失的情況下,提供的自定義錯誤頁,但我嘗試這樣做,它只是沒有工作:

Options +FollowSymlinks 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME}\.php -f  [OR] 
RewriteCond %{REQUEST_FILENAME}\.htm(l)? -f 
RewriteRule ^([a-zA-Z/-]+)\.(html|php)$ http://mydomain.com/$1 [R=301] 

ErrorDocument 404 /error.htm 

非常感謝您提前任何幫助/建議

編輯: 它可能來自服務器設置(我有網站託管在「虛擬主機」網站)?

回答

1
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)\.(php|html?)$ http://mydomain.com/$1 [L,R=301] 

如果文件不存在,您只需要重寫,否則您將無法提供任何內容。

+0

我剛剛嘗試過,但沒有重定向,因此當我訪問http://mydomain.com/example.php或http://mydomain.com/example-two.html時,URL保持不變重定向,當我嘗試http://mydomain.com/example我得到300多選擇消息(即使只有在服務器上的example.php文件) – 2012-02-05 20:39:27

+0

我不認爲我理解你的問題。哪些文件實際存在以及應該以什麼名稱引用? – nachito 2012-02-05 20:41:39

+0

example.php和example-two.html和example.txt存在於服務器上,我希望htaccess隱藏擴展名,以便用戶不知道哪個文件是.html,.php或.txt文件 – 2012-02-05 20:43:45

相關問題