我目前正在Kirby建立一个画廊,并且有一个有效地具有两种模式的专辑页面:1)画廊列表,显示所有项目。2) 单幅图像。我正在传递一个GET
像这样的变量:
/gallery/album-name?p=03.jpg
我真正想要的是这样的网址:
/gallery/album-name/03.jpg
Kirby 已经在其默认.htaccess
文件中进行了一些 url 重写,如下所示:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php [L]
/index.php/gallery/album-name?p=03.jpg
它从这个删除部分重写了 url index.php
。
现在,我确实认为我可以简单地让它重写任何具有如下 get 变量的 URL:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/([A-Za-z0-9-]+)?$ index.php?p=$1 [L]
但这似乎不起作用。
我的问题是:这可以做到吗?如果是这样,该GET
变量是否仍可用于我的脚本?
非常感谢!
我目前的完整重写规则
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
#//www. vs //
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
# block text files in the content folder from being accessed directly
RewriteRule ^content/(.*)\.(txt|md|mdown)$ error [R=301,L]
# block all files in the site folder from being accessed directly
RewriteRule ^site/(.*) error [R=301,L]
# block all files in the kirby folder from being accessed directly
RewriteRule ^kirby/(.*) error [R=301,L]
# make panel links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^panel/(.*) panel/index.php [L]
# make gallery links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^gallery/(.*)/([A-Za-z0-9-]+\.jpg)?$ index.php?p=$2 [L]
# make site links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php [L]
</IfModule>
这适用于一切,但我在(例如)这个网址上得到一个 404:/gallery/my-gallery-name/01.jpg