一组URL的重写?

时间:2015-11-18 07:59:54

标签: apache .htaccess mod-rewrite

我想为.htaccess创建一个重写规则,我可以使用它重定向子页面。规则应该做出以下的事情:

我有数百页可以在以下路径下访问

http://www.domain.de/firma/stadt/adresse

现在我想将所有这些网址重定向到

http://www.domain.de/firma/stadt

因为我使用了这个规则:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/firma/stadt/(.+)\.(htm|php|html)$ /firma/stadt/$1 [L,R=301]
</IfModule>

不幸的是,没有任何反应:-(错误在哪里?

此外,我还想从此规则中排除个别网址...有人可以帮助我吗?

亲切的问候

1 个答案:

答案 0 :(得分:0)

您的重写规则逻辑存在问题。试试这个:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^firma/stadt/(.+)$ /firma/stadt/ [L,R=301]
</IfModule>

原因:

  1. 根据您自己的描述,的对象的URL在其中http://www.domain.de/firma/stadt/adresse带有“文件扩展名”。所以期望这样的规则永远不会匹配。

  2. 数学模式中的前导斜杠(/)在.htaccess样式规则中没有任何意义,因为它们适用于相对路径。

  3. 此外,您还必须注意放置htaccess样式文件的位置。

    一般注意事项:如果你确实需要,你应该只使用.htaccess样式文件。如果您没有访问http服务器配置,则可能是典型情况。否则,您应该始终更喜欢将此类规则放在http服务器主机配置中。 .htaccess样式文件非常容易出错,难以调试且真的使服务器速度降低。