繁体   English   中英

Apache mod_rewrite Rewriterule没有正则表达式?

[英]Apache mod_rewrite Rewriterule without regex?

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

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

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

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

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

我如何摆脱正则表达式?

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

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

但是,如果您想要的是将无限数量的现在不存在的页面重定向到Apache的新URL方案,我担心你会遇到regexp。 但是,我应该同意Gerben的看法,IO更有可能降低服务器速度而不是正则表达式本身 - 我正在使用每天有数百万请求的系统,并且重写规则不是我们的主要性能问题...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM