如何让.htaccess url重定向并管理对missing.html页面的多个调用?

时间:2011-04-23 08:28:31

标签: php .htaccess

我已将我的.htaccess设置为将调用重定向到mydomain.com/something.html到mydomain.com/index.php?q=something

这工作正常....但我注意到,因为移动到新托管我得到多个查询“查询”丢失。 我很确定这是因为错误的URL的默认html页面是“missing.html”,它被重定向为mydomain.com/index.php?q=missing。因此,任何缺少的URL都会导致我的PHP脚本以“缺失”作为输入运行。

有没有办法让URL重定向并管理对missing.html的调用,而不实际调用我的PHP脚本来查找丢失的URL?


使用解决方案进行编辑;这是我的.htaccess,只有在没有现有URL时才会进行重定向:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Options +FollowSymLinks
RewriteEngine on

RewriteRule (.*)\.html index.php?q=$1

似乎需要放置RewriteCond(如上所示)。

2 个答案:

答案 0 :(得分:3)

您正在寻找RewriteCond

.htaccess

中试试这个
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

这些规则也将停止重写任何可访问的路径。如果您想严格missing.html,那么以下规则就足够了:

RewriteCond %{REQUEST_URI} !/missing.html

请注意,这些指令必须在RewriteRule之前。

答案 1 :(得分:1)

是不是可以添加一个优先于另一个的重写规则,并专门将mydomain.com/missing.html重写到404页面的位置? (查看您已设置的重定向规则会有所帮助。)