我正在尝试重写我的网址,但我也在使用路由器。 所以我希望路由器控制错误页面,例如找不到错误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/上亲自检查一下
答案 0 :(得分:1)
这是由于您的正则表达式[a-zA-Z0-9-z\-\_]+
不允许使用点斜杠或正斜杠。
您可以使用此规则代替现有规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .+ index.php?urlpath=$0 [L,QSA]