如何在 Kirby CMS 中为单页应用配置 htaccess
How to configure htaccess in Kirby CMS for single page app
我正在 Kirby CMS 上开发单页应用程序,需要将大部分页面重定向到主页,以便我可以在前端处理路由。
一些页面,即 /api__data 以及与面板相关的所有内容仍然需要通过 Kirby 访问。
我在配置 .htaccess 文件以实现正确的重定向时遇到问题。
目前 .htaccess 看起来像这样:
# Kirby .htaccess
# rewrite rules
<IfModule mod_rewrite.c>
# enable awesome urls. i.e.:
# http://yourdomain.com/about-us/team
RewriteEngine on
# make sure to set the RewriteBase correctly
# if you are running the site in a subfolder.
# Otherwise links or the entire site will break.
#
# If your homepage is http://yourdomain.com/mysite
# Set the RewriteBase to:
#
# RewriteBase /mysite
# In some enviroments it's necessary to
# set the RewriteBase to:
#
# RewriteBase /
# block text files in the content folder from being accessed directly
RewriteRule ^content/(.*)\.(txt|md|mdown)$ index.php [L]
# block all files in the site folder from being accessed directly
# except for requests to plugin assets files
#RewriteRule ^assets/plugins/([a-zA-Z0-9\.\-_%=]+)/(.*)$ site/plugins//assets/ [L,N]
#RewriteCond !^plugins/[a-zA-Z0-9\.\-_%=]+/assets/.*
RewriteRule ^site/(.*) index.php [L]
# block direct access to kirby and the panel sources
RewriteRule ^(kirby|panel\/app|panel\/tests)/(.*) index.php [L]
# make panel links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^panel/(.*) panel/index.php [L]
# make site links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php [L]
</IfModule>
# Additional recommended values
# Remove comments for those you want to use.
#
# AddDefaultCharset UTF-8
#
# php_flag short_open_tag on
提前感谢您的帮助!
因此,为了使单页应用程序正常运行,我根本不必编辑 htaccess 文件。我将以下行添加到 site.php 文件中(在访问函数中):
if (!preg_match("/api_/i", $uri)) {
return $this->page = $this->homePage();
}
这确保所有网址都重定向到主页(我的 api 电话除外)
我正在 Kirby CMS 上开发单页应用程序,需要将大部分页面重定向到主页,以便我可以在前端处理路由。
一些页面,即 /api__data 以及与面板相关的所有内容仍然需要通过 Kirby 访问。
我在配置 .htaccess 文件以实现正确的重定向时遇到问题。
目前 .htaccess 看起来像这样:
# Kirby .htaccess
# rewrite rules
<IfModule mod_rewrite.c>
# enable awesome urls. i.e.:
# http://yourdomain.com/about-us/team
RewriteEngine on
# make sure to set the RewriteBase correctly
# if you are running the site in a subfolder.
# Otherwise links or the entire site will break.
#
# If your homepage is http://yourdomain.com/mysite
# Set the RewriteBase to:
#
# RewriteBase /mysite
# In some enviroments it's necessary to
# set the RewriteBase to:
#
# RewriteBase /
# block text files in the content folder from being accessed directly
RewriteRule ^content/(.*)\.(txt|md|mdown)$ index.php [L]
# block all files in the site folder from being accessed directly
# except for requests to plugin assets files
#RewriteRule ^assets/plugins/([a-zA-Z0-9\.\-_%=]+)/(.*)$ site/plugins//assets/ [L,N]
#RewriteCond !^plugins/[a-zA-Z0-9\.\-_%=]+/assets/.*
RewriteRule ^site/(.*) index.php [L]
# block direct access to kirby and the panel sources
RewriteRule ^(kirby|panel\/app|panel\/tests)/(.*) index.php [L]
# make panel links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^panel/(.*) panel/index.php [L]
# make site links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php [L]
</IfModule>
# Additional recommended values
# Remove comments for those you want to use.
#
# AddDefaultCharset UTF-8
#
# php_flag short_open_tag on
提前感谢您的帮助!
因此,为了使单页应用程序正常运行,我根本不必编辑 htaccess 文件。我将以下行添加到 site.php 文件中(在访问函数中):
if (!preg_match("/api_/i", $uri)) {
return $this->page = $this->homePage();
}
这确保所有网址都重定向到主页(我的 api 电话除外)