Regex 将所有内容重定向到一个文件,不允许直接访问PHP文件
我正在努力在我的.htaccess文件中创建一组规则,结果是不断出现500个内部服务器错误Regex 将所有内容重定向到一个文件,不允许直接访问PHP文件,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,我正在努力在我的.htaccess文件中创建一组规则,结果是不断出现500个内部服务器错误 RewriteRule ^(.*)\.php$ /router.php?rq=$1 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /router.php?rq=$1 [L,QSA] 我希望.htaccess的行为如下: 所有请求(资源、图像、CSS、js等除外)都应
RewriteRule ^(.*)\.php$ /router.php?rq=$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /router.php?rq=$1 [L,QSA]
我希望.htaccess的行为如下:
$\u服务器['REQUEST\u URI']
不管怎样您可以将此规则用于路由:
RewriteCond %{REQUEST_URI} !/router\.php [NC]
RewriteRule \.php$ /router.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /router.php [NC,L]
这是可行的,但如果它存在,它仍然会转到某个PHP文件。例如,如果我输入
/test.php
(一个现有文件),它将加载该文件,而不是router.php
,真的吗?这是不应该发生的,我在发布之前已经明确地测试了这个条件。但是我会把这个规则分成2来强制执行。谢谢,但是现在不管我加载了什么URL,我都会有500个内部错误,这真的很奇怪,因为我再次测试了它,发现它工作正常。您的.htaccess或系统中的任何其他.htaccess中是否有其他规则。如果您使用的是CMS/PHP框架,请告诉我