0

我一直在测试正则表达式并得出结论,这是有史以来最有效的性能杀手。

我的问题是我的网站需要更好的网址,唯一正确的方法似乎是 Apaches Rewriterule,但它需要与正则表达式一起使用,我想避免这种情况。

任何人都知道是否可以避免使用正则表达式,如果可以,那么该怎么做?

我现在在 .htaccess 中使用的是:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

我如何摆脱正则表达式?

4

1 回答 1

2

如果您事先知道要重定向哪些 URL,我应该使用 Redirect 而不是 Rewrite 规则。重定向没有正则表达式,但这意味着您需要指定要重写的每个 URL,例如

Redirect /BadUrl http://myhost.com/GoodUrl

但是,如果您想要让 Apache 将无限数量的现在不存在的页面重定向到新的 URL 方案,恐怕您会被正则表达式所困扰。但是,我应该同意 Gerben 的观点,即 IO 更有可能降低服务器速度,而不是正则表达式本身——我正在使用每天有数百万个请求的系统,我们的主要表现不是重写规则问题...

如果基本重定向不起作用,并且您不想使用 mod_rewrite 函数,我建议将重定向逻辑完全从 Apache 中移出。由于您已经在使用 PHP,您可以简单地用 PHP 脚本替换普通的 404 文件,该脚本将 URL 重写为所需的 URL 方案。它还可以让您的用户有机会更新他们的书签。

于 2012-05-07T12:15:09.787 回答