site.com/dir/page1.php
フォーマット内のページがフォーマットに変換された場合、書き換えルールが正常に機能していましたsite.com/page1
。私はそれを達成しました:
# 1. turn on the rewriting engine
RewriteEngine On
# 2. remove the www prefix
RewriteCond %{HTTP_HOST} ^www\.site\.com [NC]
RewriteRule ^(.*)$ http://site.com/$1 [L,R=301]
# 3. send all non-secure pages to secure pages
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
# 4. if 404 not found error, go to homepage
ErrorDocument 404 /index.php
# 5. if url received with trailing slash (e.g. http://domain/test/) then go to correct page (e.g. http://domain/pages/test.php)
RewriteRule ^([^.]+)/$ includes/$1.php
# 6. if url received WITHOUT trailing slash (e.g. http://domain/test) then go to correct page (e.g. http://domain/pages/test.php)
RewriteRule ^([^.]+)$ includes/$1.php
でブログをセットアップしましたが、ブログsite.com/blog/
にアクセスしようとすると、ホームページが表示されます (つまり、404 エラー)。
エラーは #5 と #6 にあると思いますが、どういうわけか、書き換えルールが特に「includes」ディレクトリ専用であることを指定する必要がありますか? しかし、私は間違っている可能性があります。
アップデート:
ここで「ブログ」ディレクトリを無視する解決策を試しました:
拡張子、末尾のスラッシュ、www を取り除くための書き換えルール用に .htaccess ファイルを構成するにはどうすればよいですか?
#skip wordpress site which starts with blog
RewriteCond %{REQUEST_URI} !^/blog [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
しかし、残念ながらそれは私にとってはうまくいきませんでした。