2013-03-19 112 views
2

我希望用這個.htaccess文件完成2件事。.htaccess將html重定向到php並訪問沒有.php擴展名的php文件

1)對.html的所有請求指向.php 例如。用戶進入:http://www.mywebsite.com/contact.html 瀏覽器加載:http://www.mywebsite.com/contact.php

2)請求http://www.mywebsite.com/contact將加載contact.php (這應該適用於所有的頁面不只是聯繫頁

這是我的.htaccess文件。

Options -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php [L] 

說實話,我不知道這些是什麼做的事情。我混在一起從我讀文章mismash。任何幫助,將不勝感激。

+0

這個重寫規則^(。*)$ $ 1.PHP [ L]不好;很多東西都可以在那裏找到;如果你得到了domain/a/b?a = t,並且你重寫爲domain/a/b?a = t.php – 2013-03-19 20:34:39

+0

如果只是針對2個文件/文件夾,你可以使用簡單的'redirect'方法。 – 2013-03-19 20:34:59

+0

秒,你不瞭解htaccess的作用; http://www.mywebsite.com/contact可能無法加載contact.php;它會加載你說要加載的文件;將嘗試給你一個例子 – 2013-03-19 20:36:22

回答

2

嘗試這樣的事情。請按照評論主題的安全含義,但這是你要求做的

RewriteEngine On 
RewriteBase/

# Redirect HTML to PHP 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*).html$ $1.php [L] 

# Otherwise, try PHP 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !\.php$ 
RewriteRule ^(.*)$ $1.php [L] 

# Lastly, fallback to error page 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . 404.php [L] 
+0

對PHP的HTML給了我這個:URL.com/file.php.php.php.php.php.php...等等...... – Drew 2013-03-19 20:40:07

+0

我提出了一個解決方案。 File.php不存在,對吧? – landons 2013-03-19 20:48:13

+0

它的確如此。我正在將所有的html文件遷移到php,所以來自外部網站的舊鏈接可能仍然存在.html和因此這些不會存在,所以瀏覽器需要加載.php – Drew 2013-03-19 20:49:58

0

我需要解釋一些關於htaccess文件角色;

在這個例子中,htaccess會嘗試和匹配模式,因爲你需要在你的例子中;

如果模式匹配,則會發生某些操作;

你(MARK)比你需要從URL

對於每個規則,提取的第一個()將有1 $ id,則seccond()將對

$ 2等的所有數據

如果$ 1是'help',它可能會加載'helpme.php'文件,而不是'help.php'文件;它會加載你想要加載的文件;

使用$ 1,$ 2 ...你可以在我的例子傳遞參數和值到真正的/譯URL請求

,我想總是使用index.php文件,你會用任何你需要的文件

Options +SymLinksIfOwnerMatch 

RewriteEngine on 

RewriteRule ^([a-zA-Z-]+)$ index.php?action=$1 [NC,L] 

RewriteRule ^(member)-([0-9-]+)$ index.php?action=member&id=$2 [NC,L] 

RewriteRule ^([a-zA-Z-]+)/([a-zA-Z-]+)-([0-9-]+)$ index.php?action=$1&saction=$2&sid=$3 [NC,L] 

RewriteRule ^([a-zA-Z-]+)/([0-9-]+)$ index.php?action=$1&id=$2 [NC,L] 

RewriteRule ^([0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/(.*).html$ index.php?action=details&id=$1&p1=$2&p2=$3&p3=$4 [NC,L] 
0

如果你是想所有的.html文件的指向PHP文件這樣做的一個簡單的辦法是

RewriteRule ([\w\d\-_]+)(\.html)? $1.php [L] 

這還允許你使用子目錄

contact.html會重定向到contact.php

/subdir/page.html會重定向到/subdir/page.php等

相關問題