2017-06-12 46 views
-2

我想爲所有未使用此擴展名的頁面添加.html擴展名。我想在具有.html的頁面存在時執行此操作。 我嘗試了很多我已經看到的代碼,沒有任何工作在這個意義上。也許有一些不同於htaccess來做到這一點。 我得到的唯一的東西就是當頁面用/結束時將.html擴展名。 該網站是做與WordPress,所以如果你知道任何插件或東西,可以做到這一點,請告訴我:)Htaccess - 在需要時添加.html - Wordpress

我在.htaccess初始代碼:

# Do not do anything for already existing files and folders 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .+ - [L] 

# add .html file extension (if such file does exist) 
RewriteCond %{DOCUMENT_ROOT}/$1\.html -f 
RewriteRule ^(.+[^/])/?$ $1.html [L,QSA] 

非常感謝您的回答!

+0

您需要確保'RewriteCond'測試'-f'「是一個文件」。這是你的提示;) –

+0

下一次當你問,添加你到目前爲止嘗試過的代碼。 – besciualex

回答

0

的問題是,有好幾次我不需要進行擴展,以便我發現了一個WordPress插件,能夠做到這一點,我在PHP也用一個小功能檢查url中的單詞以添加或不添加.html擴展名。

我已經使用了插件的名稱是:

的網頁上的附加擴展由dr.code.skm

的作用與此類似:

function my_page_template_redirect() 
{ 
    global $wp; 
    $current_url = home_url(add_query_arg(array(),$wp->request)); 
    if (!strpos($current_url, '.html') && !strpos($current_url, 'wp-admin') && !strpos($current_url, 'wp-login')) { 
     if(!is_front_page()){ 
      wp_safe_redirect($current_url.'.html'); 
     }  
    } 
} 
add_action('template_redirect', 'my_page_template_redirect'); 

感謝您的幫助!

2

很簡單:

Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/
# If /foo/bar does not exist as a file (and) 
RewriteCond %{REQUEST_FILENAME} !-f 
# If /foo/bar does not exist as a directory (and) 
RewriteCond %{REQUEST_FILENAME} !-d 
# If /foo/bar.html exists as a file 
RewriteCond %{REQUEST_FILENAME}.html -f 
# If above three conditions match, append .html 
# stopping any other rewrite rules below this (L=last) 
# and adding query string (QSA=Query String Append) such as ?a=b&c=d 
RewriteRule ^(.+)$ /$1.html [L,QSA] 
+0

這不行!感謝您的回答,但是當我編寫沒有.html擴展名的網址時,它會將我返回到404。 –

+0

網址是否符合評論中所寫的所有條件? –

+0

問題是具有html擴展名的文件不存在。我正在與wordpress合作,我認爲我必須對每個案例做一個正則表達式。你知道如何在.httaccess中進行正則表達式嗎? –