htaccess将index.php重写为.html

时间:2014-04-30 05:02:40

标签: php .htaccess

我有以下rewriterules:

RewriteEngine On

RewriteRule ^([^\-]*)-(.*)-von-(.*)\.html$ $1index.php?filter=$2&marke=$3 [QSA]
RewriteRule ^([^\-]*)-von-(.*)\.html$ $1index.php?marke=$2 [QSA]
RewriteRule ^([^\-]*)-(.*)\.html$ $1index.php?filter=$2 [QSA]

RewriteRule ^(.*)\.html$ $1index.php

前3个规则正在运行,但第四个,只是重写index.php到.html不是。这有什么不对?

编辑:

网址为example.com/folder/subfolder/index.php

在我跟随htaccess的文件夹中:

RewriteEngine on
RewriteRule ^subfolder(.*) subfolder/$1

子文件夹中的htaccess是上面的那个

现在,第一个规则的URL是example.com/folder/subfolder-value1-von-value2.html,对于第二个和第三个规则,它的作用是example.com/folder/subfolder-value1。 html和example.com/folder/subfolder-von-value2.html 因此,对于逻辑,第四条规则也应该在没有参数的情况下工作,但它不起作用

3 个答案:

答案 0 :(得分:1)

您不应将$1添加到规则的第二部分。它会将第一个匹配组附加到index.php文件名。你目前得到的是' indexindex.php'

如果您只想将index.html重写为index.php,则可以在文件末尾放置以下行。

RewriteRule ^index.html$ index.php [L,NC]

你也可能想从其他行中删除$1部分。

答案 1 :(得分:1)

将其放在/folder/.htaccess

RewriteEngine on

RewriteRule ^subfolder\.html$ subfolder/index.php [L,NC]

RewriteRule ^subfolder(.+) subfolder/$1 [L,NC]

答案 2 :(得分:0)

你可以尝试这个&看?

RewriteEngine on
RewriteRule ^(.*)\.html $1\.php