【发布时间】:2013-12-06 02:33:27
【问题描述】:
我在这里安装的一个 TYPO3 使用页面设置中的字段alias。 它不使用simulatestatic 或realurl。如果页面的别名是foo,则可以通过以下 URL 访问该页面:
/index.php?id=foo/foo.html
我现在希望可以通过另一个 URL 访问该页面:/foo,而不是 .html。
我的方法是简单地使用 mod_rewrite 添加一些这样的规则:
RewriteCond %{REQUEST_FILENAME} !index.php$
RewriteCond %{REQUEST_FILENAME} !\.html$
RewriteRule ^([^/]+)$ $1.html [QSA]
我的 RewriteRules 有效,它们首先将 URI /foo 重写为 /foo.html,然后再重写为 /index.php。这不起作用,我在请求 /foo 时得到 404。
我认为这是因为 TYPO3 仍然得到原始 URI 是 /foo 而不是 /foo.html 的信息,它无法识别。
如果不使用 realurl 或simulatestatic(副作用是不需要的),也不使用HTTP 重定向(浏览器中的URL 应该是/foo),如何解决这个问题? apache 中有没有类似服务器内部重定向的东西?
【问题讨论】:
-
你确定没有开启模拟静态?我以前不知道“别名”,但jochenfroehlich.com/typo3-glossar/alias.html 告诉我所描述的行为是通过模拟静态实现的。如果没有,也许它是您可以扩展的自定义扩展?
-
不,模拟静态已关闭,我很确定。例如,如果它打开,菜单将生成以
.html结尾的 URL(页面类型和 id 编码到文件名中),但生成的 URL 看起来像index.php?id=alias。这个问题已经得到解决(但没有解决),方法是使用 mod_rewrite 将.html附加到不带斜线点(= 无文件扩展名)的 URI,然后通过 HTTP 重定向客户端。 -
哪些“副作用”是不需要的?有负面的吗?
-
是的,但它们属于“商业”类别。无法详细说明,抱歉。如果这些不存在,realurl 早就安装好了
标签: apache mod-rewrite typo3