apache對文件後綴的解析方法是“。”後邊的都是後綴,從後到前,如果後綴無效,會解析前一個,例如 1.php.x1.x2.x3 他會先解析x3,不存在解析x2,不存在解析x1,都不存在就只能解析php了。如圖:
定義後綴,但是不可能所有後綴都定義吧?x1.x2.x3可以換成任意後綴
例如1.php.a,。a沒有定義,apache不明白a是什麼後綴,就向前解析,也就是去解析php.
用偽靜態能解決這個問題,重寫類似。php.*這類文件
打開apache的httpd.conf
找到LoadModule rewrite_module modules/mod_rewrite.so
把#號去掉,重啟apache,在網站根目錄下建立。htaccess文件,代碼如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .(php.|php3.) /index.php
RewriteRule .(pHp.|pHp3.) /index.php
RewriteRule .(phP.|phP3.) /index.php
RewriteRule .(Php.|Php3.) /index.php
RewriteRule .(PHp.|PHp3.) /index.php
RewriteRule .(PhP.|PhP3.) /index.php
RewriteRule .(pHP.|pHP3.) /index.php
RewriteRule .(PHP.|PHP3.) /index.php
</IfModule>
可能會誤殺,對我來說暫時也沒發現誤殺。根據自己要求修改自己定義的執行php的後綴,用|隔開就行。 /index.php可以換成你想要顯示的文件。
效果如圖: