重定向到页面但使用htaccess保留原始URL

时间:2015-03-12 18:54:47

标签: php apache .htaccess mod-rewrite redirect

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^test\.localhost/$ [NC]
RewriteRule ^(.*)$ http://test\.localhost/err.php/$1 [NC,L]

这很有效。当我输入test.localhost / qwieoqjdoiqwje时,它会将我重定向到:

test.localhost / err.php / qwieoqjdoiqwje

但是我想重定向我将我重定向到test.localhost / qwieoqjdoiqwje并加载err.php。这可能通过htaccess吗? Thanks1

1 个答案:

答案 0 :(得分:1)

您可以通过使用.htaccess

将所有请求重定向到一个文件来完成此操作
<IfModule mod_rewrite.c>

  # Block access to hidden files
  RewriteRule "(^|/)\." - [F]

  # Redirect requests that are not files or directories to index.php.
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^ index.php [L]
</IfModule>

然后在index.php中使用路径执行你想要的任何功能。

  if ($path == 'error' || $path == 'hello/world')
  {
     myerrorfunction();
  }

这当然是一个非常简单的解决方案。您可能想要创建一个将路径映射到函数的数组。这就是大多数cms系统完成这项任务的方式。