首页 > 解决方案 > htaccess 过滤器不起作用

问题描述

我正在尝试重写我的网址,但我也在使用路由器。所以我希望路由器控制错误页面,例如找不到错误 404,而不是我的 htaccess 文件。一切工作正常,除了我的 htaccess 文件中的过滤器字符串。这是重写行:

    RewriteEngine On
      RewriteRule ^([a-zA-Z0-9-z\-\_]+)$    index.php?urlpath=$1

那么问题是它不接受像 . 和 /

所以这有效:https ://www.mystem.tk/aurlthatdoesntexist

但这不起作用:https ://www.mystem.tk/apagethatdoesntexist.php

这也不起作用:http ://www.mystem.tk/a/url/that/doesnt/exist

最后一个:https ://www.mystem.tk/a/page/that/doesnt/exist.php

我希望我的问题通过这种方式很清楚......您可以在https://www.mystem.tk/上自行查看

标签: .htaccessurl-rewriting

解决方案


这是由于您的正则表达式[a-zA-Z0-9-z\-\_]+不允许点或正斜杠。

您可以使用此规则而不是现有规则:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .+ index.php?urlpath=$0 [L,QSA]

推荐阅读