我试图让我的.htaccess工作疯了,并且跟着几个例子没有成功(当然修改它们因为它们大多是静态的)。
我的问题是,我需要一个通用的htaccess重定向到随机的php文件(省略php扩展名),例如:
这是我努力的结果并不成功:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^MYDOMAIN [NC]
RewriteRule ^(.*)$ http://MYDOMAIN/$1 [L,R=301,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)/?$ /$1.php [NC,L]
RewriteRule ^(.*?)/?(.+)$ /$1.php?param=$2 [NC,L]
</IfModule>
问题是我在任何请求上都遇到500服务器错误。 如果我评论最后一条规则,那么:
任何帮助都将受到赞赏,因为我不知道这里发生了什么。
P.S。我还测试了一个&#34;停止&#34;开头的规则如下:
RewriteRule ^.*\.php.*$ - [L]
然后我可以在没有500服务器错误的情况下使用这两个规则,只需在参数情况下使用404。
答案 0 :(得分:1)
您获得500,因为您的上一条规则在没有任何条件的情况下运行并导致无限循环。
您可以在站点根目录中使用这些规则.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^([^/]+)/([^/])/?$ $1.php?param=$2 [QSA,L]