Apache .htaccess漂亮url问题(mod_重写)
我有一个按类别列出产品的目录。如果存在Apache .htaccess漂亮url问题(mod_重写),apache,.htaccess,mod-rewrite,friendly-url,Apache,.htaccess,Mod Rewrite,Friendly Url,我有一个按类别列出产品的目录。如果存在\u GET变量,则在查询中使用该变量。我想使用“漂亮的url”,比如:example/a/1/b/2/c/3/d/4变成example/index.html?a=1&b=2&c=3&d=4 我看到的大多数.htaccess示例仅使用变量替换\u GET值,但我可以使用如下规则: Options +FollowSymlinks RewriteEngine on RewriteRule ([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]
\u GET
变量,则在查询中使用该变量。我想使用“漂亮的url”,比如:example/a/1/b/2/c/3/d/4
变成example/index.html?a=1&b=2&c=3&d=4
我看到的大多数.htaccess
示例仅使用变量替换\u GET
值,但我可以使用如下规则:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ index.html?$1=$2&$3=$4&$5=$6 [L]
RewriteRule ([^/]+)/([^/]+)/([^/]+)/([^/]+)$ index.html?$1=$2&$3=$4 [L]
RewriteRule ([^/]+)/([^/]+)$ index.html?$1=$2 [L]
而且它是有效的。。。但是,当我添加越来越长的RewriteRules
(如out to&17=$18
)时,它停止工作。链中的最后一个变量根据前面的值变成某种数组(在上面它将构建index.html?a0=a1&a3=a4
)
- 有更好的方法吗李>
- 它似乎效率低下李>
.htaccess
- 规则可以维持多久
谢谢 mod_rewrite最多只支持
$9
和%9
我建议您修改脚本以使用
$\u SERVER['PATH\u INFO']
,或者使用RewriteMap
调用脚本以将路径转换为查询字符串。mod\u rewrite
只允许您有十个反向引用,其中一个是整个可匹配部分(最终只剩下9个可定义的捕获组),所以你肯定会受到限制
然而,对我来说,在脚本文件中检查服务器的请求URI
/脚本名称
/路径信息
变量,并对其进行解析以从URL中获取键值对更有意义。然后,您只需在.htaccess
:
RewriteRule On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.html [L]
然后你的脚本会处理剩下的部分。我真的想知道,如果你有那么多的
GET
变量,如果它们都被制作成一个“漂亮”的URL?毕竟,如果您的URL中有20多个斜杠,那么您可能同样可以传递一个普通的查询字符串。这取决于您的应用程序以及用户如何与这些URL交互,因此您可能有很好的理由希望这样做。谢谢!Google没有显示任何关于有多少个斜杠的结果允许在.htacces中使用变量,现在我知道尝试不同的方向…将返回报告。谢谢你们两位…我已经开始使用请求URI,Tim,我正在使用您的示例规则-它很容易实现(重写地图让我伤痕累累!)。您是对的,尽管url有点漂亮,但它对我们的客户来说并不是一个巨大的优势(特别是对于更长/更具体的url)。但是,对于熟悉我们产品类别的员工来说,这是一种查找资料的便捷方式,而且更容易键入!对于更简单的查询,url非常漂亮:)再次感谢!