清理嵌套的 mod_rewrite 语句

Cleaning up nested mod_rewrite statements

提问人:Pekka 提问时间:2/8/2010 最后编辑:Pekka 更新时间:2/9/2010 访问量:448

问:

我正在清理一个包含大量语句的大文件。.htaccessmod_rewrite

混乱的最大部分来自捕获各种事件的语句

/directory1
/directory1/directory2
/directory1/directory2/directory3

使用类似

RewriteCond  %{REQUEST_URI} ^/([^/]+)/([^/]+)$   
RewriteRule .* /front.php?level1=%1&level2=%2&%{QUERY_STRING} [L]

RewriteCond  %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)$   
RewriteRule .* /front.php?level1=%1&level2=%2&level3=%3&%{QUERY_STRING} [L]

精通mod_rewrite的人能否给我一个关于如何编写一个通用语句的指示,该语句将捕获任何深度并将适当的变量放入 RewriteRule 中?directory1/directory2...level

apache .htaccess mod-rewrite

评论

0赞 FerranB 2/8/2010
此问题属于serverfault。
0赞 Pekka 2/8/2010
呵呵,来吧。关于 SO 有大量mod_rewrite相关问题。
0赞 FerranB 2/8/2010
在服务器故障在线之前还是之后?
0赞 Tyler Carter 2/8/2010
属于 Serverfault。有些人还没有意识到这一点,但Mod_Rewrite确实属于 Serverfault。
0赞 Pekka 2/8/2010
我们正在 SO 上讨论各种 HTML 问题,其中很多问题实际上属于 Doctype。使用mod_rewrite通常是为动态网站优化或构建合理的 URL 结构的一部分。这怎么与编程有关?

答:

2赞 BalusC 2/9/2010 #1

而是使用以下重写规则

RewriteRule ^(.*)$ front.php/$1 [L]

并通过 pathinfo 访问文件夹:front.php

$pathinfo = $_SERVER['PATH_INFO'];

您也可以在 Apache 中启用并将其配置为用作索引文件,并以相同的方式获取 pathinfo。MultiViewsfront.php

评论

0赞 Pekka 2/9/2010
好主意,在性能方面没有问题,因为无论如何都会通过PHP脚本运行。这将是一个在尽可能多的平台上运行的应用程序,因此我不想依赖 MultiView。我现在使用的是干杯!RewriteRule ^dirname/(.*)$ dirname/index.php?request=$1%{QUERY_STRING} [L]