2015-06-20 144 views
1

我想通過在.htaccess中使用RewriteRule使URL更好看,但它不起作用。用.htaccess重寫不起作用

這種情況。我有一個根文件夾,裏面有一個名爲pdf.php的PHP文件。該文件中的腳本向用戶發送PDF文件,該名稱在URL中作爲變量提供。 PDF文件位於名爲pdf的文件夾中,放在根目錄中。該文件夾受到保護,因此只能通過使用該腳本來獲取PDF文件。所有這些都是出於安全原因

例如,當您轉到http://example.com/pdf.php?file=pdf/File.pdf時,可以下載PDF文件,其中pdf/File.pdf是PDF文件的路徑。這工作正常。當你只需要去http://example.com/pdf/File.pdf時,我希望它能夠工作,所以URL必須被重寫爲前面提到的那個。

我試圖用一個生成器來製作一個RewriteRule,但它不起作用。 以下規則位於文件夾pdf中的.htaccess文件中。將它放在根中也不起作用。

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^pdf/([^/]*)$ /pdf.php?file=pdf/$1 

保護文件夾pdf如下。

ErrorDocument 403 http://example.com/ 
Order deny,allow 
Deny from all 
+0

附上一組源和目標地址的你是後。你迄今爲止給出了什麼規則? –

+0

我用.htaccess文件中的行改變了我的帖子。 – TB308

回答

0

嘗試在根目錄的.htaccess驗證碼:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 

# to convert spaces to hyphens 
RewriteRule "^(pdf)/(\S*) +(.*)$" /$1/$2-$3 [L,NE,R=302] 

RewriteRule ^(pdf/.+)$ /pdf.php?file=$1 [L,QSA,B,NC] 
+0

我做了你所說的,但它不起作用。由於PDF文件位於受保護的文件夾中,所以仍然出現403錯誤,這意味着重定向不起作用。還有什麼我可以嘗試? – TB308

+0

保護線現在在第一篇文章中。當我刪除它們時,它看起來像你的RewriteRule的工作,但只適用於文件名中只有一個單詞的PDF文件。當名稱有兩個或更多個單詞並用空格分隔時,它不起作用。提前致謝! – TB308

+0

不幸的是它仍然是一樣的。 – TB308