将所有内容重定向到一个文件,禁止直接访问PHP文件

时间:2013-12-16 11:51:57

标签: 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表现得像这样:

  1. 所有请求(资源,图片,CSS,js等除外)都应该 重定向到/router.php,保留查询字符串。我不需要 REQUEST_URI作为查询字符串,因为它可以通过 $_SERVER['REQUEST_URI']无论如何。

  2. 所有尝试直接访问PHP文件,例如用户输入 “index.php”,也应该重定向到router.php。

1 个答案:

答案 0 :(得分:1)

您可以将此规则用于路由:

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]