Htaccess 重写链接在 .htaccess 文件中不起作用

Posted

技术标签:

【中文标题】Htaccess 重写链接在 .htaccess 文件中不起作用【英文标题】:Htaccess rewrite links doesn't work in .htaccess file 【发布时间】:2017-08-10 23:48:56 【问题描述】:

我有一个网站,我尝试使用 htaccess 文件重写链接,但重写的链接不起作用。原来的链接是这样的:

http://my-website.com/open?cours=3em-tricks

我想改写成这样的形式:

http://my-website.com/tuto/cours/3em-tricks/

.htaccess 文件中我写了这段代码:

RewriteEngine On
RewriteBase /
RewriteRule ^tuto/cours/(.*)$ open?cours=$1 [N]

但我总是在重写链接中得到 404 页面。注意 htaccess 模块是在服务器上激活的。

【问题讨论】:

这里的“不起作用”是什么意思?您是否尝试过打开 mod_rewrite 日志记录以查看发生了什么? 我的意思是新链接只适用于原来有效的链接 【参考方案1】:

也许是斜杠和N

RewriteEngine On
RewriteBase /
RewriteRule ^tuto/cours/(.*)/?$ open?cours=$1 [L]

【讨论】:

如果您将 te [L] 替换为 [R,L],您看到新 URL 了吗? 同样的问题 404 未找到 是的,但是您看到新网址了吗? 我不明白你的问题,你能解释一下吗 当您使用浏览器访问http://my-website.com/tuto/cours/3em-tricks/(以及.htaccess 中的标志[R,L])时,您是否看到了新的URL (http://my-website.com/open?cours=3em-tricks)?

以上是关于Htaccess 重写链接在 .htaccess 文件中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 php 和 .htaccess 进行友好的 url 重写。与 css 图像和 js 的相对链接的困难

使用 htaccess 和 regex 重写旧 URL

简单的htaccess base重写为子文件夹中的站点,链接与相对路径

了解重定向和重写 .htaccess 之间的区别

PHP中查询字符串的HTACCESS重写规则

在 $_GET 中使用转义 & 符号的 htaccess 重写规则失败