首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kirby .htaceess和GET变量

kirby .htaceess和GET变量
EN

Stack Overflow用户
提问于 2013-03-20 17:44:37
回答 2查看 1.2K关注 0票数 2

我目前正在柯比中构建一个画廊,并且有一个有效有两种模式的相册页面: 1)图片库列表,显示所有项目。2)单一图像。我传入一个GET变量,如下所示:

代码语言:javascript
复制
/gallery/album-name?p=03.jpg

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

代码语言:javascript
复制
/gallery/album-name/03.jpg

Kirby已经在其默认的.htaccess文件中进行了一些url重写,如下所示:

代码语言:javascript
复制
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php [L]

它从这个/index.php/gallery/album-name?p=03.jpg重写urls,删除index.php部件。

现在,我确实认为我可以让它重写任何具有get变量的URL,如下所示:

代码语言:javascript
复制
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/([A-Za-z0-9-]+)?$ index.php?p=$1 [L]

但这似乎行不通。

我的问题是:能否做到这一点?如果是这样的话,我的脚本仍然可以使用GET变量吗?

非常感谢!

我现在的完全重写规则

代码语言:javascript
复制
<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>

这适用于一切,但我在(例如)这个url:/gallery/my-gallery-name/01.jpg上得到一个404

EN

回答 2

Stack Overflow用户

发布于 2013-03-20 17:49:57

试试这个,会有用的

代码语言:javascript
复制
RewriteRule ^our-wedding/(.*)$ index.php?p=$1 [L]

现在你可以通过

代码语言:javascript
复制
/gallery/our-wedding/03.jpg
票数 1
EN

Stack Overflow用户

发布于 2013-03-20 21:29:46

您的RewriteRule有一个包含两个部分的正则表达式

代码语言:javascript
复制
^(.*)/([A-Za-z0-9-]+)?$
  |    |
  $1   $2

$1是图片库部分,$2是可选图片部分。你只能使用其中的一部分,或者两者兼用,不管你需要什么。如果只想使用图片部分,则必须在重写规则中使用$2

代码语言:javascript
复制
RewriteRule ^(.*)/([A-Za-z0-9-]+)?$ index.php?p=$2 [L]

虽然,您的图像部件正则表达式与03.jpg不匹配。如果要匹配,则必须在字符类.中包括一个点[...]或向其添加一个扩展名。

代码语言:javascript
复制
[A-Za-z0-9-]+\.jpg
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15530976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档