许多海报在调试文件中的RewriteRule和RewriteCond语句时遇到问题.htaccess.其中大多数使用共享托管服务,因此无权访问根服务器配置.他们无法避免使用.htaccess文件进行重写,并且无法像许多受访者所建议的那样启用RewriteLogLevel.还有许多.htaccess特定的陷阱和约束都没有得到很好的解决.设置本地测试LAMP堆栈对于大多数人来说需要太多的学习曲线.
所以在这里我的Q是我们怎么会建议他们调试他们的规则本身.我在下面提供一些建议.其他建议将不胜感激.
了解mod_rewrite引擎循环遍历.htaccess文件.引擎运行此循环:
do
execute server and vhost rewrites (in the Apache Virtual Host Config)
find the lowest "Per Dir" .htaccess file on the file path with rewrites enabled
if found(.htaccess)
execute .htaccess rewrites (in the user's directory)
while rewrite occurred
Run Code Online (Sandbox Code Playgroud)
因此,您的规则将重复执行,如果您更改URI路径,那么它可能最终会执行其他.htaccess文件(如果存在).因此,请确保终止此循环,必要时添加额外的内容RewriteCond以停止规则触发..htaccess除非明确意图使用多级规则集,否则还要删除任何较低级别的重写规则集.
通过针对一组测试模式进行测试,确保每个Regexp的语法都是正确的,以确保它是一个有效的语法,并完成您对各种测试URI的意图.请参阅下面的答案了解更多详情
在测试目录中逐步构建规则. 您可以使用" .htaccess在路径功能上执行最深的文件"来设置单独的测试目录(树)和调试规则集,而无需搞砸主要规则并停止站点工作.您必须一次添加一个,因为这是将故障本地化为单个规则的唯一方法.
使用虚拟脚本存根转储服务器和环境变量.(参见清单2)如果您的应用程序使用了,blog/index.php那么您可以将其复制 …
我在典型的共享主机服务产品上运行了一组自行开发的应用程序.我基于来自D/B元数据的前缀,基于表的列表,从允许的表的静态配置表列表移动到一个表.当我将此版本推广到公共服务时,我的每请求延迟平均增加了2.3-2.4秒.一些仪器显示这完全取决于一个SQL查询:
SELECT TABLE_NAME AS name
FROM information_schema.tables
WHERE TABLE_SCHEMA = '<DBname>'
AND TABLE_NAME LIKE '<TablePrefix>%';
Run Code Online (Sandbox Code Playgroud)
我使用它是因为我想在结果集中明确命名列.但是,使用备用查询对此进行编码会添加额外的代码行,其运行时间<2毫秒:
SHOW TABLES LIKE '<TablePrefix>%';
Run Code Online (Sandbox Code Playgroud)
我的服务提供商使用Enterprise MySql 5.0.92-50,因此我无法进行任何分析.这是一个扩展问题,因为它不会出现在我的开发环境和我可以分析的测试VM上.它们支持数千个用户,因此实时模式将非常大,但即便如此,连接和大多数查询只需要几毫秒.
有谁知道为什么在大型多用户系统上查询基于内存的information_schema需要这么长时间?
我知道这个问题很愚蠢并且经常被回答,但现在没有解决方案对我有用。我正在使用 OpenSuse 和 Apache2 并添加了
SetEnvIf Remote_Addr "127\.0\.0\.1" loopback
SetEnvIf Remote_Addr "::1" loopback
CustomLog /var/log/apache2/access_log combined env=!loopback
Run Code Online (Sandbox Code Playgroud)
但是如果我重新启动 apache,访问日志会显示我
::1 - - [01/Nov/2012:23:18:06 +0100] "OPTIONS * HTTP/1.0" 200 - "-" "Apache (internal dummy connection)"
::1 - - [01/Nov/2012:23:18:16 +0100] "OPTIONS * HTTP/1.0" 200 - "-" "Apache (internal dummy connection)"
::1 - - [01/Nov/2012:23:18:22 +0100] "OPTIONS * HTTP/1.0" 200 - "-" "Apache (internal dummy connection)"
::1 - - [01/Nov/2012:23:18:34 +0100] "OPTIONS * HTTP/1.0" 200 - "-" "Apache (internal dummy connection)"
::1 …Run Code Online (Sandbox Code Playgroud)