没有.html后缀的Page-alias

时间:2013-12-06 02:33:27

标签: apache mod-rewrite typo3

我在这里安装的一个TYPO3使用页面设置中的字段alias它不会使用simulatestaticrealurl 。如果页面的别名是foo,则可以通过以下网址访问此页面:

  • /index.php?id=foo
  • /foo.html

我现在希望在其他网址下可以访问该网页:/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中有类似服务器内部重定向的东西吗?

1 个答案:

答案 0 :(得分:1)

如果您的服务器上已激活mod_proxy,则可以使用proxy flag [P]并写入:

RewriteCond %{REQUEST_FILENAME} !\.html$
RewriteRule ^([^/]+)$ /$1.html [QSA,P]

如果没有,你可以写一个充当代理的php文件(我之前为Typo3做过)。在这种情况下,即使是简单的file_get_contents()也很方便。确保仅加载您网域中的网页。将非.html文件重定向到代理文件,该文件将它们重定向到.html文件,然后由Typo3处理。