【发布时间】:2021-11-10 09:39:01
【问题描述】:
我有以下工作正常的 .htaccess 文件,现在我正在尝试添加另一个文件夹,但这不起作用。我该怎么做?
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)\.html$ page.php [QSA,L]
正如您在上面的 htaccess 中看到的,它只匹配任何 *.html 并发送到 page.php
现在我想为 somefolder/somepage.html 添加另一行,它应该重定向到 post.php 但问题是第一个没有任何文件夹,第二个有文件夹但都有 .html 所以第一个条件触发.
提前致谢。
【问题讨论】:
-
<something>.html的请求是否有可能映射到真实文件? (我怀疑它可以映射到目录?) -
如果
.html 实际存在,那么它会显示出来。 RewriteCond %{REQUEST_FILENAME} !-f 行检查物理文件是否存在。 -
是的,我明白了。我的意思是...如果您实际上没有
<something>.html形式的物理文件(因为这似乎是一个 PHP 驱动的站点,所以拥有.html文件也不一定是常态)然后检查请求没有映射到文件是不必要且浪费的。同样,检查<something>.html的请求是否未映射到目录似乎也没有必要(您有带有.html扩展名的目录吗?!)。 “符号链接”检查也是如此。 -
文件系统检查相对“昂贵”,所以如果不需要的话;不要使用它们(当然不是在每个指令之前)。删除文件系统检查(不需要时)简化了指令并提高了性能。
-
也许吧,但最好是确保错误弹出。