需要.htaccess配方来动态显示rss提要

wz1wpwve  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(168)

我目前使用以下方法将.rss文件路由到一个动态生成rss提要的脚本:

RewriteRule ^(.*).rss$ /get-feed.pl?item=$1

它可以完美地处理如下URL:

www.example.com/articles.rss

我想做的是将URL更改为:

www.example.com/rss/articles/

我试过的所有方法都不管用。

vmjh9lq9

vmjh9lq91#

我只是想在食谱里加一些斜线,但我不是这些食谱的Maven,所以它们不起作用。像这样的东西不起作用:RewriteRule ^/rss/(.*)/$ /get-feed.pl?item=$1
(“recipe”=正则表达式/缩写为“regex”或Apache文档中的RewriteRule“pattern”--至少我认为这是你所指的?我们不是在这里烤蛋糕!))
这是非常接近的,除了RewriteRulepattern 匹配的URL路径在.htaccess(目录)上下文中使用时不以斜杠开头。^rss/(.*)/$。如果您查看第一个规则返回的内容,则会发现捕获的反向引用中没有斜杠前缀(即item URL参数的值)。
但是,这里还有其他(小)问题...

  • 第二个路径段不能为空,所以最好匹配 something,而不是 anything。例如,(.+)而不是(.*)。但是,这应该有更多的限制,所以只匹配一个路径段,而不是任何URL路径(我怀疑这很可能会失败)。例如,推测/rss/foo/bar/baz/不应该匹配?
  • 同样,如果您只想匹配articles形式的字符串,那么让正则表达式更具限制性,以便它只匹配字母(或者字母+数字+连字符)?
  • 此规则上缺少Llast)标志,如果后面有其他指令,则会出现问题。

因此,如果您希望重写www.example.com/rss/articles/的URL(注意尾部斜杠),请尝试以下方法:

RewriteRule ^rss/([\w-]+)/$ /get-feed.pl?item=$1 [L]

确保在测试之前清除浏览器缓存。
这将需要接近.htaccess文件的顶部,* 在 * 任何现有的重写之前。

  • 旁白:* 快速浏览一下您的原始指令:
RewriteRule ^(.*).rss$ /get-feed.pl?item=$1

严格来说,这并不正确,因为它可能匹配太多。rss前面的未转义点匹配 any 字符。.*子模式匹配0个或多个字符--它必须是 something。因此,它实际上应该是这样的:

RewriteRule ^([\w-]+)\.rss$ /get-feed.pl?item=$1 [L]

相关问题