如何在Apache中编写这个重写规则?

时间:2010-01-08 03:09:35

标签: apache mod-rewrite

如果用户访问/abc

并且abc下没有名为/的文件/目录,将其重定向到/test.php?from=abc

但如果存在,请不要重定向。

2 个答案:

答案 0 :(得分:0)

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ test.php?from=$1

RewriteCond是一个条件 - 以下规则只有在条件为真时才会执行。

-f测试检查文件是否存在,-d测试检查目录是否存在。

SCRIPT_FILENAME将设置为Apache用于获取文件的系统路径(例如/var/www/html/blah.html

因此它检查文件是否存在,然后检查该目录是否存在。如果满足这两个条件,它将处理规则。

示例:

  • 您的DOCUMENT_ROOT设置为/var/www/html
  • 您的用户请求http://yoursite/blah.html
  • 首先,我们检查/var/www/html/blah.html是否为文件
  • 然后我们检查/var/www/html/blah.html是否是目录
  • 如果该名称没有文件或目录,则会重写为http://yoursite/test.php?from=blah.html

RewriteCond

的文档

答案 1 :(得分:0)

可能是这样的,在Windows上的xampp上测试过。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ /test.php?from=$1