我試圖從我的文件中隱藏.php擴展名,以及強制生成的URL上的尾部斜槓。.htaccess在目錄中重寫 - 隱藏PHP擴展和強制結尾斜槓
示例:對/about.php的請求將變爲/ about /,並且/ about的請求將轉到/ about /。
下面的重寫代碼完美地工作,當我在我的hostdomain根:
RewriteEngine On
RewriteRule ^(.*)/$ /$1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://edit.mydomain.org/$1/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)\.php\ HTTP/ [NC]
RewriteRule .+ http://edit.mydomain.org/%1 [R=301,QSA]
不過,我需要我的文件移動到該主機名的目錄。將目錄名添加到規則中,並在目錄中使用.htaccess根本不起作用,似乎會導致無盡的重定向。
我看了看周圍的StackOverflow和其他網站,並試圖許多例子,結束了與許多不同的錯誤,最常見的是:
- 一切都是無止境的重定向。
- 除目錄主頁以外的所有內容都是500錯誤。
- about.php重定向到/ about,但沒有重定向到/ about /和/ about /顯示500錯誤。
- 一切正常,但當沒有文件名訪問時,(目錄)index.php的主頁進入無盡的重定向。
- 事情重定向到edit.mydomain.org/home/username/public_html/mydomain.org/edit/pagename.php顯然不存在。
感謝您的幫助!我真的需要將這些文件保存在一個目錄中,但如果需要,.htaccess可以進入主機名root。
這個目錄將edit.mydomain.org/dave/
非常感謝!這工作完美。 我也想知道如何在有人直接訪問索引文件時隱藏index.php?現在,它只是重定向到/ index /並顯示主頁。 我添加了一個重定向行,我找到了index.php,但現在它給了我一個Apache「此文檔已移動」頁面,但鏈接仍然轉到index.php。 – Brian 2011-04-03 06:11:13
@Brian - 如果你不想讓人們訪問index.php,那麼通過在'RewriteEnginx On'行:'DirectoryIndex whatever.php index.php'後添加.htaccess來改變目錄索引。然後,當你將瀏覽器指向一個文件夾時,Apache將首先查找whatever.php文件,如果它存在,它將使用它,如果它不存在,它將查找index.php。所以你可以將你的索引文件改成任何.php任何人去index.php只會得到一個404文件找不到錯誤。 – Emmanuel 2011-04-03 07:33:01
哦,順便說一句,如果你真的不想讓人知道你使用的是php,請確保你的php.ini中的expose_php設置被設置爲Off。看到這個鏈接:http://goo.gl/JRIYp – Emmanuel 2011-04-03 07:37:46