【发布时间】:2015-02-28 01:57:45
【问题描述】:
我目前正在尝试使用 mod rewrite 和 htaccess 重写 url。 这是我的 htaccess :
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^lul$ lol/index.html [L]
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
请求的网址:/lul。 这会将 url 重写为 /app/webroot/lul。这怎么可能? 如果我删除最后 2 行(app/webroot/ 行),那么重写工作正常(index.html 文件只显示“Hello”,重写的 url 是 /lol/index.html)。
我的代码如何以及为什么不起作用?
【问题讨论】:
-
因为您的最后一条规则说,将任何内容重定向到 aap/webroot/anything,并且由于您不验证或强制停止任何规则,它将在链中执行。
L标志代表 LAST 但它不会强加它,这与 apache 2.4 及更高版本中可用的标志END不同,这意味着如果匹配,我们将在此规则之后完成。 -
[L] 标志实际上通常在那里表示如果应用了规则,则重写结束 编辑:好的,我正在尝试 ;)
-
这是对其实际作用的巨大误解,如果您使用 apache 的 RewriteLog,您可以轻松查看
-
感谢它的工作。好吧,我在网上使用 htacess 测试仪,它给我写了这个,所以我真的不知道。您可以将此添加为答案,以便我将其设置为已解决吗?
标签: apache .htaccess mod-rewrite url-rewriting