RewriteRule 与预期不匹配(我)
我不明白为什么这不起作用。也许有人可以向我解释一下。
我有以下内容:
http://www.mydomain.de/my-apache-tag.html
应该重写为
http://www.mydomain.de/tag/my-apache
在我的 .htaccess 中,我启用了此规则:
RewriteRule ^/(.*)-tag\.html$ /tag/$1
根据我的理解, / 和之前 -tag.html 之间的所有内容都应视为参数 1。
但是上面的内容将导致 404。我什至将/tag/$1 前面的域但这也不起作用。
感谢任何帮助,非常感谢。
基督教
i cannot understand why this is not working. Maybe somebody can explain it to me.
I have the following:
http://www.mydomain.de/my-apache-tag.html
which should rewrite to
http://www.mydomain.de/tag/my-apache
In my .htaccess I enabled this rule:
RewriteRule ^/(.*)-tag\.html$ /tag/$1
In my understanding everything between / and before -tag.html should be taken as argument 1.
But the above will lead to a 404. I even put the domain in front of /tag/$1 but this doesn't work too.
Any help is appreciated, thanks much.
Christian
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据 apache 版本,不需要前导斜杠。 (如果您希望能够匹配这两种情况,您可以放置 /?)请参阅
@Jeff Parker
评论。另外,如果您希望在输入
http://www.mydomain.de 时 URL 在浏览器中显示为
,您应该添加http://www.mydomain.de/tag/my-apache
/my-apache-tag.html[R]
标志进行重定向。当然,服务器上的文件应名为
tag/
目录中的my-apache
。否则会出现 404 错误。如果您希望客户端输入
http://www.mydomain.de/tag/my-apache
并获得服务http://www.mydomain.de/my-apache-tag .html
你的规则是错误的,应该是:如果你想结合这两种行为,请小心循环。
Depending on apache version, the leading slash is not required. (You can place /? if you want to be able to match both cases) see
@Jeff Parker
comment.Also, if you want the URL to be displayed as
http://www.mydomain.de/tag/my-apache
in the browser when typinghttp://www.mydomain.de/my-apache-tag.html
, you should add the[R]
flag to redirect.And of course, your file on the server should be name
my-apache
in thetag/
directory. Or you will have 404 error.If you want the client to type
http://www.mydomain.de/tag/my-apache
and be servedhttp://www.mydomain.de/my-apache-tag.html
your rule is wrong and should be :If you want to combine both behaviour, be careful of loops.