RewriteEngine on
RewriteCond %{http_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
最初のルールは正しく動作しているため、ブラウザを正しくリダイレクトしています。しかし、訪問者がdomain.com/services.phpの代わりにdomain.com/servicesに行くことができるように、.phpを取り除くべき第2のルールは機能していません。最後に/を付ける第3の条件は働く。mod_rewrite .phpが機能しない。
ストリッピングの.phpは私に404エラー与え理由を任意のアイデア:
The requested URL /s/p/domain.com/public/packing-tips.php was not found on this server?
何かアドバイスを?
あなたが直接(エンドでの.phpで)URLを行く場合: - それは私のために正常に動作しますが、特定の状況であってもよいですか?たとえば、domain.com/services.phpまたはdomain.com/packing-tips.phpにアクセスして404を取得した場合は、 –
いいえ、404は表示されません。ページは正確に表示されます。ただし、アドレスバーから手動で.phpを削除すると、上記のエラーが表示されます。 – brianrhea