使用.htaccess,我想將不存在的文件重定向到控制器頁面,並重寫存在的.php文件擴展名爲一個.html擴展名。如果文件存在並且是.html頁面,我希望它保持不變。每次我嘗試將重寫規則從.php注入到.html時,我似乎都搞亂了重定向到控制器頁面。所以我不知道該從哪裏開始:如果文件存在,則重寫擴展名,如果文件不存在則重定向,使用htaccess
Options -Indexes
Options +FollowSymLinks
DirectoryIndex index.php
ErrorDocument 404 /404.php
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ mycontroller.php [L,QSA]
</IfModule>
任何幫助,我將不勝感激。
編輯
我似乎找到了大部分答案here的(但我必須離開了ReweriteBse或者它不工作)。最大的問題是,現在,我現有的.html文件不起作用,它只會提供帶有.html擴展名的.php文件,並將其他所有內容指向控制器。現有的.html文件轉到我的404頁面。我想知道如何保持現有的.html文件不變。我的新代碼如下:
RewriteEngine on
RewriteCond %{THE_REQUEST} (.*)\.php
RewriteRule ^(.*)\.php $1.html [R=301,L]
RewriteCond %{THE_REQUEST} (.*)\.html
RewriteRule ^(.*)\.html $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ mycontroller.php [L,QSA]
感謝您的快速響應!我把它放進去,現在我得到了「沒有指定輸入文件」。除了存在的.php文件之外的所有東西(我必須以.php格式輸入它們)。 – seaofinformation
好吧,也許我的第五行是造成這個問題,讓我想想吧 – Oussama
我應該有資格 - 我正在上傳.htaccess不正確。現在我已經正確上傳了,但似乎沒有任何變化。如果我輸入.html,它不會提供相應的.php頁面,如果它存在,只會轉到404錯誤。 – seaofinformation