我已经在这个问题上工作了一段时间了。我是新来的,所以我不知道我在做什么。
但基本上我试图检测什么时候输入了一个不存在的URL,然后根据特定的URL输出一个index.php
文件。
这是我目前所拥有的
RewriteCond %{HTTP_HOST} ^(example.com)$
RewriteRule ^/?twyyt/(.*) /index.php
假网址如下
https://www.example.com/twyyt/6543
当这个网址输入,我想该网站使用的代码从example.com/index.php
。
我做错了什么?
1条答案
按热度按时间kokeuurv1#
假网址如下
您正在请求
www.example.com
,但仅在 condition(RewriteCond
指令)中检查example.com
,因此该规则永远不会触发。否则,这里没有什么特别的“错误”。然而...
/twyyt/
之后的URL路径。(你没有使用它)。L
(或END
)标志,因此处理将继续通过文件。(如果您有任何后续指令,则很重要。)因此,以下内容可能足够:
在
.htaccess
中,RewriteRule
* 模式 * 上不需要/?
前缀。同样,substitution 字符串上不需要斜杠前缀(重写为文件路径,而不是URL路径)。我正在尝试检测何时输入了不存在的URL
这实际上并没有检查请求是否Map到一个 file,如果这就是你所暗示的?上面的规则在内部将所有格式为
/twyyt/<anything>
的请求重写为/index.php
。因此,任何静态资产都不应该以/twyyt/
开头。但是,如果你只想重写
/twyyt/<number>
形式的URL(如你的例子),那么正则表达式可以相应地修改:或者,要专门检查请求是否Map到文件,您需要单独的 * 条件 *。举例来说: