2015-04-30 73 views
5

經過幾個小時的.htaccess與搞亂我到了,再發送到一個單一的PHP腳本的任何請求,將處理的結論:重定向任何GET請求到一個PHP腳本

  • 生成的HTML(無論包括或動態)
  • 301在邏輯中具有更多靈活性的重定向(對於愚蠢的.htaccess-eer)
  • 404錯誤最終如果請求沒有意義。

留在.htaccess中的最小功能。

經過一些測試,似乎是非常可行的,從我的角度來看更可取。這麼多,我不知道這種方法出了什麼問題或可能出錯?

  • 服務器性能?
  • 就SEO而言,我並沒有看到任何問題,因爲程序對機器人來說是「透明的」。

redirector.php會期望查詢字符串組成的實際請求。 將.htaccess代碼發送到那裏會是什麼?

回答

1

我優先考慮將您的所有php文件移動到其他目錄中,並且只在您的htdocs路徑中放置1個php文件,它處理所有請求。其他文件,要通過不PHP,你可以在文件夾中放置時間與該htaccess的:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /index.php/$0 [L] 

現有文件(JPG格式,JS或什麼都)仍可達沒有PHP。這是實現它的最靈活的方式。

實施例:

- /scripts/ # Your PHP Files 
- /htdocs/index.php # HTTP reachable Path 
- /htdocs/images/test.jpg # reachable without PHP 
- /private_files/images/test.jpg # only reachable over a PHP script 
1

您可以使用此代碼對所有請求重定向到一個文件:

RewriteEngine on 
RewriteRule ^.*?(\?.*)?$ myfile.php$1 

注意,所有的請求(包括樣式表,圖片...)也將被重定向。當然還有其他的可能性(規則),但這是我正在使用的一種方法,它將保持查詢字符串正確。如果你不需要它,你可以使用

RewriteEngine on 
RewriteRule ^.*?$ myfile.php 

這是一種常見的技術爲機器人,甚至用戶只能看到他們請求的URL,而不是它是如何內部處理。服務器性能完全不成問題。

因爲你重定向全部到一個php文件的URL沒有404頁面了,因爲它會被你的.php文件緩存。所以請確保您正確處理無效的網址。

相關問題