RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC]
RewriteRule^/%1 [R=301,L,NE]
然後我嘗試用另一種略有不同的代碼
RewriteEngine On
RewriteBase/
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.[a-zA-Z0-9]+$ $1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
兩個代碼產生同樣的問題,如果嘗試訪問
- domain.com/other/content.php去domain.com/other/content(200 response)
現在這裏是奇怪的行爲,如果嘗試訪問
domain.com/other/content.php/進入domain.com/other/content.php/(200響應不404)
domain.com/other/content.php/any-word去domain.com/other/content.php/any-word(200反應不是404錯誤)
所有其他重定向工作完美,除了這問題。 任何一個可以幫助與兩個代碼,我需要這兩個代碼整改,因爲我有兩個不同的網站既htaccess的規則。
我下面寫一個答案,我發現在http://stackoverflow.com/questions/31460693/htaccess的去除的尾隨斜槓後的文件擴展名。如果我添加此與上面的代碼,它的工作,但我保留這個代碼單獨,它不工作。任何人都可以解釋爲什麼並使用這兩種代碼可能會使併發症?請看我的回答 – user3384093