我目前正在尝试从我网站上的网址中删除文件名(.php),并遇到以下.htaccess代码:
# Remove filename extension
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
我测试了这个,它在我的网站上正常运行。我担心的是该网站将收到来自世界各地的100,000多次点击...这个.htaccess重写是否会导致我的服务器过载?
几个月前我在.htaccess中搞乱自定义URL重写,在另一个项目上,它一直在服务器上重载内存。有没有办法保护这种情况不发生?或者在.htaccess中这种重写是不是问题?
答案 0 :(得分:1)
阅读“贪婪”和“懒惰”正则表达。你的RewriteRule的第一段是懒惰的(比贪婪更好);但它仍然足够精致,以确切知道它在寻找什么。
贪婪需要大量的记忆力。你可能想要它[QSA,NC,L]
。
QSA将添加任何?query=strings
,NC强制URL忽略该情况,L表示它是最后一次重写规则,直到下一次重写条件为止。
将它包装在IFModule中非常重要,如果Rewrite无法正常工作,则不希望服务器500出错。 RewriteBase将告诉它从.htaccess文件所在的文件夹的根目录中获取它的文件。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [QSA,NC,L]
</IfModule>