首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数无限制的.htaccess RewriteRule

参数无限制的.htaccess RewriteRule
EN

Stack Overflow用户
提问于 2018-02-16 04:30:21
回答 1查看 53关注 0票数 0

我正在苦思冥想如何在.htaccess中创建一个RewriteRule来接受友好URL的无限参数。现在,我的.htaccess文件如下所示:

代码语言:javascript
复制
RewriteRule "^category/([a-z0-9-]+)/?$" "category.php?cat1=$1" [NC,L]
RewriteRule "^category/([a-z0-9-]+)/([a-z0-9-]+)/?$" "category.php?cat1=$1&cat2=$2" [NC,L]
RewriteRule "^category/([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/?$" "category.php?cat1=$1&cat2=$2&cat3=$3" [NC,L]

我将这一行重复了大约10次,以接受10个不同的类别。有没有更简单的方法来实现这一点?提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-16 05:13:10

这不是对你的问题的直接回答,这里是使用RewriteRule和.htaccess的替代方案(这是实现你想要的更好的方式)。

首先,如果可能的话,您应该倾向于使用您的apache服务器配置文件而不是.htaccess文件。使用.htaccess会出现性能问题和潜在的安全问题。这在互联网上有很好的记录,所以我不会在这里重复,但快速的谷歌搜索应该会提供更多的信息。

其次,使用FallbackResource和一个路由器文件,而不是使用RewriteRule,这是一个更具扩展性的解决方案。

这个想法是,如果对您的站点的请求与任何现有文件都不匹配,该请求将由您的FallbackResource文件处理。

如果在您的配置(或htaccess)中有

代码语言:javascript
复制
FallbackResource router.php

如果有人请求example.com/category/potato,该请求将导致服务器提供router.php (假设类别/土豆实际上不是您服务器上的文件)

那么router.php中包含了什么呢?当然,您不能在相同的页面上为每个请求提供服务,因此您需要检查发出的请求的详细信息,然后相应地提供正确的内容。

一个非常简单(且未经测试)的路由器:

代码语言:javascript
复制
$request_uri = $_SERVER['REQUEST_URI']; // eg /category/potato

$path_tokens = explode("/", trim($request_uri, "/"));

if($path_tokens[0] == "category"){
    $category = $path_tokens[1];
    renderCategoryPage($category); // can render the category page for potatoes
}

这个例子只是给你一个想法,你将不得不设计和实现你自己的,但希望你能看到这是如何给予更多的自由,而不是一些脆弱的重写规则。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48815748

复制
相关文章

相似问题

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