首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache重写规则:动态读取参数

Apache重写规则:动态读取参数
EN

Stack Overflow用户
提问于 2015-03-30 11:15:33
回答 1查看 26关注 0票数 0

我为自己的网站写了一个小CMS。我的.htaccess中有以下规则:

代码语言:javascript
复制
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /index.php?module=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)$ /index.php?module=$1&controller=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /index.php?module=$1&controller=$2&action=$3 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /index.php?module=$1&controller=$2&action=$3&arg1=$4 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /index.php?module=$1&controller=$2&action=$3&arg1=$4&arg2=$5 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/(.*)$ /index.php?module=$1&controller=$2&action=$3&arg1=$4&arg2=$5&arg3=$6 [L]

我需要阅读6篇文章。在我看来,我的代码非常多余,但是我不知道我能做些什么来缩短代码。有人给我一个提示,我怎么能用较少的行来读这6个论点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-27 14:28:30

行的数量实际上不会对任何事情造成伤害,因为就文本的数量而言,这是没有意义的。.htaccess文件必须非常大才有任何值得注意的性能问题。

您编写代码的方式实际上无法减少代码行,因为您需要匹配所有可能出现的URI。这就是为什么包括wordpress在内的许多CMS只是将所有内容路由到index.php中,然后在那里处理它。

例如,您可以执行以下一条规则来路由所有请求

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

然后使用$_SERVER["REQUEST_URI"]在PHP中获取URI,然后在/上爆炸,然后以这种方式或任何您想要处理的方式获取页面或操作。

是您如何在.htaccess中缩短行的方法

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

https://stackoverflow.com/questions/29344764

复制
相关文章

相似问题

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