簡體   English   中英

如何在html版本之前配置服務器以提供頁面的php版本?

[英]How do I configure server to serve the php version of a page before the html version?

我正在轉換我的網站上的一些頁面使用PHP。

http://vidalingua.com/blog/top-travel-blogs-germany.html
http://vidalingua.com/blog/top-travel-blogs-germany.php

我不想刪除html版本,因為有一些指向它的反向鏈接包含html擴展名。

如果未指定文件擴展名,如何讓我的Apache服務器提供頁面的php版本而不是html版本?

http://vidalingua.com/blog/top-travel-blogs-germany

理想情況下,我希望有一個解決方案可以在任何時候有兩個不同擴展名的文件。

這應該指向正確的方向:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} ^(.+)\.html$
RewriteCond %1.php -f
RewriteRule ^/?blog/(.+)\.html$ /blog/$1.php [END]

如果您使用上述規則收到內部服務器錯誤(http狀態500),那么很可能您運行的是非常舊版本的apache http服務器。 在這種情況下,您將看到http服務器錯誤日志文件中不受支持的[END]標志的明確提示。 您可以嘗試升級或使用舊的[L]標志,在這種情況下它可能會起作用,但這取決於您的設置。

此規則同樣適用於http服務器主機配置或動態配置文件(“.htaccess”文件)內部。 顯然,重寫模塊需要加載到http服務器內並在http主機中啟用。 如果您使用動態配置文件,則需要注意在主機配置中完全啟用它的解釋,並且它位於主機的DOCUMENT_ROOT文件夾中。

一般說法:您應該始終更喜歡將此類規則放在http服務器主機配置中,而不是使用動態配置文件(“.htaccess”)。 這些動態配置文件增加了復雜性,通常是導致意外行為的原因,難以調試,它們確實會降低http服務器的速度。 它們僅作為最后一個選項提供給您無法訪問真正的http服務器主機配置(讀取:非常便宜的服務提供商)或堅持編寫自己的規則的應用程序(這是一個明顯的安全噩夢)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM