Perch を使用して小さな CMS ソリューションを開発しています。現在、ローカル開発マシンの WampServer で実行されています。
Perch はすぐに使いやすい URL を提供しないため、/perch ディレクトリが変更されないようにしながら、これを実装したいと考えました。
これまでのところ、書き換え部分が機能しています。つまり、/blog.php のリクエストは /blog に 301 され、/blog は以下のルールを使用して /blog.php に書き換えられます。
Options +FollowSymLinks -MultiViews
RewriteEngine On
# Rewrites domiain.com/file to domain.com/file.php
RewriteCond %{REQUEST_URI} !^/perch
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
# Redirects domain.com/file.php to domain.com/file
RewriteCond %{REQUEST_URI} !^/perch
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{REQUEST_URI} ^(.+)\.php$
RewriteRule (.*)\.php$ /$1 [R=301,L]
ただし、HTML 出力にはまだ .php 拡張子が残っています。.htaccess ファイルに以下を追加してみました:
AddOutputFilterByType SUBSTITUTE text/html
#Replace all .php extensions
Substitute s|.php||ni
#Original blog pattern /blog/post.php?s=2014-11-18-my-first-blog-post
Substitute s|blog/post\?s=(\w+)|blog/$1|i
ただし、これはグローバルに適用されます。つまり、/perch フォルダー内のリンクにも適用されます。/perch フォルダー以外のすべてに適用する条件を追加する方法が見つかりませんでした。そのような方法はありますか?
ProxyPass/ProxyReversePass のドキュメントも見ましたが、ページ上の HTML を置き換えるだけではやり過ぎのようです。
どんな助けでも大歓迎です。
よろしく、 dotdev