我看到的一个问题是您的 RewriteRule 将捕获对 index.php 的直接调用,并尝试重定向
m.mydomain.com/index.php
至
m.mydomain.com/index.php?p=index.php
您可以通过首先使用如下所示的单独重写规则捕获“index.php”路径来防止这种情况:
RewriteRule ^(index.php) - [L]
但我认为缺乏这一点不应该导致你的问题。也许在不同的 .htaccess 或 Web 服务器配置文件中有另一条规则在干扰?我问这个是因为我对以下内容没有任何问题:
# .htaccess
RewriteEngine On
RewriteRule ^(index.php) - [L]
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]
注意:我取出了AddType x-mapp-php5 .php因为那在我的设置中不起作用。我不知道这是否与您的问题有关,但您可能希望将其包装在<IfModule>中以确保安全,如如何在我的开发机器上支持“AddType x-mapp-php5 .php”中所建议的那样
将它们结合在一起,这(也)对我有用:
# .htaccess
<IfModule !mod_php5.c>
AddType x-mapp-php5 .php
</IfModule>
RewriteEngine On
RewriteRule ^(index.php) - [L]
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]