2014-04-23 188 views
0

我正在研究Apache的重寫規則,並且不使用.htaccess,而是寫入它們的虛擬主機設置。重寫規則不能正常工作

在這裏,我有2個問題:

  1. 我可以使用 「重寫規則blog_rss.xml blog_rss.php」,但不能使用 「重寫規則^ blog_rss.xml $ blog_rss.php」,爲什麼呢?

  2. 即使第一個腳本正在工作,它不會更改爲我想要的RSS樣式。我應該使用重寫規則爲它設置處理程序嗎?

感謝您回答這個問題。

更新:這是關於重寫規則的腳本。

<Directory /> 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    ErrorDocument 404 /error/404.php 
    RewriteRule ^blog_rss\.xml$ blog_rss.php 
</IfModule> 
</Directory> 
+0

'^ blog_rss.xml $'是一個特定的匹配項,因爲'.htaccess'位於您的域的根文件夾中,只有當URL爲http:// domain.com/blog_rss.xml時才匹配,是這樣嗎?通過更改標題輸出,結果頁面如何顯示可以修復PHP代碼的RSS。 – Prix

+0

嗯我正在使用虛擬主機設置,我不知道它是否與.htaccess的設置相同。那麼這意味着^ blog_rss \ .xml $不適合VS設置? 此外,所以我發現第二個問題只能從使用Chrome獲得,但Firefox運行良好。 – LittPi

+0

如果你直接在'virtualhost'上使用它,那麼是的。這將是錯誤的,因爲'virtualhost'以'/'開頭,所以它必須是'^/blog_rss.xml $'而不是你擁有的。 – Prix

回答

0

感謝答案。對於V主機,我終於找到了原因。

根據RewriteRule in htaccess vs httpd.conf,目錄路徑應該與網站的基本路徑相同。例如,如果根目錄是/ var/www /,<Directory>應該設置/ var/www /或者它會檢測服務器的根路徑。

0

不,你不應該設置handler。這樣做會強制將blog_rss.php的PHP代碼作爲XML執行。這將導致整個文件被XML Mime類型響應,這可能會導致主要安全問題

但是,在完成響應之前在blog_rss.php文件中,您可能需要將響應類型設置爲RSS文件的響應類型。

blog_rss.php

header('Content-Type: text/xml'); 

抗宿主

<Directory /> 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    ErrorDocument 404 /error/404.php 
    RewriteRule ^blog_rss\.xml$ blog_rss.php 
</IfModule> 
</Directory> 

資源:electrictoolbox.com