kirby .htaceess and GET variables



我目前正在Kirby中建立一个图库,并有一个相册页面,有效地有两种模式:1)图库列表,显示所有项目。2)单一图像。我传入一个GET变量,像这样:

/gallery/album-name?p=03.jpg

我真正想要的是这样的URL:

/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上(例如)这个url: /gallery/my-gallery-name/01.jpg

试试这个,会成功的

RewriteRule ^our-wedding/(.*)$ index.php?p=$1 [L]

现在可以通过

访问
/gallery/our-wedding/03.jpg

您的RewriteRule有一个由两部分组成的正则表达式

^(.*)/([A-Za-z0-9-]+)?$
  |    |
  $1   $2

$1为图库部分,$2为可选图片部分。你可以只使用其中一个部分,也可以两者都使用,随你需要。如果您只想使用图片部分,您必须在您的重写规则

中使用$2
RewriteRule ^(.*)/([A-Za-z0-9-]+)?$ index.php?p=$2 [L]

虽然,您的图像部分正则表达式匹配03.jpg。如果你想匹配它,你必须在字符类[...]中包含一个点.,或者给它添加一个扩展名

[A-Za-z0-9-]+.jpg

最新更新