【发布时间】:2014-11-18 22:36:36
【问题描述】:
我正在使用 Perch 开发一个小型 CMS 解决方案。它目前正在我本地开发机器上的 WampServer 上运行。
由于 Perch 不提供开箱即用的友好 URL,我想实现这一点,同时确保 /perch 目录保持不变。
到目前为止,我已经完成了重写部分,即对 /blog.php 的请求将 301 发送到 /blog,并且 /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 似乎有点过头了。
任何帮助将不胜感激。
亲切的问候, 点开发
【问题讨论】:
标签: apache .htaccess mod-rewrite wampserver perch