如果文件不存在则重写条件

Rob*_*bie 0 .htaccess

我的 .htaccess 文件中有以下代码:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\w+)$ /pages.php?link=$1
Run Code Online (Sandbox Code Playgroud)

我的理解是,它应该检查文件是否不存在,检查目录是否不存在,如果不存在则执行规则。由于某种原因,当我转到以下位置时,它给了我一个错误:

http://localhost/1.php

弹出的错误信息是:

script 'C:/xampp/htdocs/1.php' not found or unable to stat
Run Code Online (Sandbox Code Playgroud)

但奇怪的是,当我访问: http://localhost/1

它按其应有的方式运行(相应地重定向)。

Pan*_*ack 5

我相信你的问题是你的正则表达式。您正在使用\w来匹配单词。嗯,.那是不匹配的。将您的规则更改为此。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /pages.php?link=$1
Run Code Online (Sandbox Code Playgroud)