我为自己的网站写了一个小CMS。我的.htaccess中有以下规则:
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个论点?
发布于 2015-05-27 14:28:30
行的数量实际上不会对任何事情造成伤害,因为就文本的数量而言,这是没有意义的。.htaccess文件必须非常大才有任何值得注意的性能问题。
您编写代码的方式实际上无法减少代码行,因为您需要匹配所有可能出现的URI。这就是为什么包括wordpress在内的许多CMS只是将所有内容路由到index.php中,然后在那里处理它。
例如,您可以执行以下一条规则来路由所有请求
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]然后使用$_SERVER["REQUEST_URI"]在PHP中获取URI,然后在/上爆炸,然后以这种方式或任何您想要处理的方式获取页面或操作。
:是您如何在.htaccess中缩短行的方法
https://stackoverflow.com/questions/29344764
复制相似问题