2013-08-27 54 views
1

我有一個PHP的網站,在根docs文件夾,網站的結構是這樣的:的.htaccess重定向斷開鏈接到PHP頁面完整參數

sitename.com/docs/ 

Docs文件夾中的PDF文件,有時由於名稱中有空格而導致瀏覽器問題,因此未找到它們(主要由IE)。

我想什麼做的是以下幾點:

每當有在docs/目錄中的URL損壞,我想整個查詢字符串重定向到文件目錄中的PHP頁面,但它必須保持PDF的名稱不變。

因此,網址是:

website.com/docs/this is a pdf 

我希望它重定向到:

website.com/docs/index.php?pdf=this is a pdf 

從那裏,我可以抓住的PDF param並修復它,將請求發送到正確的文件。

這不是直接使用.htaccess的原因是我找不到動態的解決方案,換句話說PDF中的單詞數量是可變的,可能是1到20個單詞,用空格分隔。

我在這裏有一個關於this SO post的帖子,它沒有得到一個回覆​​,但是它仍然沒有解決變長的URL長度問題。

我再次嘗試了這個從this tutorial的例子,但這並沒有幫助我,因爲我無法理解如何正確地做到這一點。

的一兩件事,我認爲是接近的是下面的代碼:

RewriteEngine on 
RewriteRule ^docs/(.*) /index.php?pdf=$1 [NC] 

我是關閉?

回答

2

首先,你應該知道,只有靜態代碼可以在.htaccess中寫入,我們無法處理的動態代碼,
以下解決方案可以幫助你我沒有測試

RewriteEngine on
RewriteRule ^docs/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /index.php?pdf=$1 [L]

+0

這工作, 謝謝! –

+0

隨時歡迎..! –

0

讓你的規則是這樣的:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^docs/((?=[^\s]*\s).+?)/?$ /docs/index.php?pdf=$1 [NC,L,B,QSA] 

這將空間全部PDF文件轉發到/docs/index.php同時使非空間的文件名不變。