2014-11-18 1 views
0

Я разрабатываю небольшое решение CMS с Perch. В настоящее время он работает на WampServer на моей локальной машине разработки.Удаление расширений .php с вывода

Поскольку Perch не предоставляет дружественные URL-адреса из коробки, я хотел бы реализовать это, в то время как каталог/perch остается нетронутым.

До сих пор у меня есть переписывание часть работает т.е. запрос на /blog.php будет 301 к/блог, и/блог будет переписать /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] 

Тем не менее, я все еще остался с расширением .php в выводе HTML. Я попытался добавить следующее в мой файл .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 - есть ли такой способ?

Я также посмотрел документацию ProxyPass/ProxyReversePass, но это похоже на излишнюю замену HTML-кода на странице.

Любая помощь была бы принята с благодарностью.

С наилучшими пожеланиями, dotdev

ответ

3

Вы говорите о окуня CMS от www.grabaperch.com?

Все здесь: http://docs.grabaperch.com/video/v/simple-url-rewriting/

Однако я по-прежнему остается .php расширений в выводе HTML

.htaccess/mod_rewrite ничего не делает для вашего HTML-вывода.

Подумайте о RewriteRules как почтальоне, который доставляет почту (URL) для целевых почтовых ящиков (фактических файлов).

Что вы делаете, вы «вручную» опустить расширение .php в разметке (выход HTML):

  • В perch_pages_navigation(), вам необходимо установить hide-extensions истинных
  • URL, добавляемых вручную: просто написать их без .php

Теперь вам нужно указать почтальону направить эти адреса в файл .php в любом случае. Вот для чего нужны RewriteRules. Так что .htaccess не удаляет суффикс .php - напротив, он добавляет его.

Вот базовый .htaccess (входит в ваш каталог public_html) для Perch (или любого варианта использования «удалить .php») + блог Perch. Я добавил несколько пояснений:

# make sure the address we received (e.g. /mypage) is not an existing file  
RewriteCond %{REQUEST_FILENAME} !-f 
# make sure it's not an existing directory either 
RewriteCond %{REQUEST_FILENAME} !-d 
# make sure there IS an existing .php file corresponding to it 
RewriteCond %{REQUEST_FILENAME}.php -f 
# if the address starts with "blog/", pick what comes afterwards, put it into the GET Parameter and quit (that's the [L]) 
RewriteRule ^blog/([a-zA-Z0-9-/]+)$ /blog/post.php?s=$1 [L] 
# if the first conditions are ok, but it wasn't a blog post (else we would have quit), just append .php to it. Ah, and keep other get params (that's the QSA=Query String Append). 
RewriteRule ^(.+)$ $1.php [L,QSA] 

Для более точных возможностей, вы можете, например. Начало здесь: https://github.com/PerchCMS/perchdemo-swift/blob/master/public_html/.htaccess

Это не повлияет на функциональность CMS в /perch/.

Смежные вопросы