Htaccess重写规则子文件夹

时间:2012-12-04 15:15:59

标签: apache .htaccess url-rewriting

我在Url Rewriting的世界里相当新鲜。我必须在我们自己的CMS中这样做才能拥有一个好看的网址,并获得一个更好的结构,通过搜索引擎(SEO)提供结果。

这是后台文件,它完成了我们现在隐藏的所有工作,其中包含很好的URL:

这是我的结构模式的一个例子:

CMS只是在FR目录中创建一个HTACCESS文件,用于完全基本的重写,如下所示:

Options +FollowSymlinks
RewriteEngine On
RewriteRule produits/solives-de-rive-rimboard index.php?p=144
RewriteRule produits/decoupe-sur-mesure index.php?p=145
RewriteRule produits/panneaux-osb index.php?p=146
RewriteRule produits/boites-de-bois-crates index.php?p=147
RewriteRule produits/palettes-de-bois index.php?p=148
RewriteRule accueil index.php?p=4
RewriteRule a-propos-de-cimdat index.php?p=139
RewriteRule produits index.php?p=140
RewriteRule videos index.php?p=141
RewriteRule nous-joindre index.php?p=142

一切都适用于第一级页面,如“accueil”,“nous-joindre”......

但我还没有找到第二和第三级页面的工作,如“produits / solives-de-rive-rimboard”。 index.php只是加载正常,除了这个页面的所有相对链接都是一个子文件夹(css,图像,jquery ......)。

我是否可以在htaccess文件中使用任何标记来指定无论在哪个级别“accueil”,“produits / something”,或者第三个级别,例如索引的“produits / group / something”。 php有一条基本路径吗?

我更喜欢在htaccess中查找一个解决方法,而不是给index.php一个“<base href="something">”,这可能会给我们的结构带来其他问题。

由于

1 个答案:

答案 0 :(得分:1)

这是一个HTML问题,而不是服务器或.htaccess问题。如果您的浏览器看到/ category / product之类的内容,那么无论内部服务器端重定向发送请求的位置如何,它都会像在/ category /文件夹中一样。

对此的修复很简单,将html中的所有链接更改为相对于站点根目录。所以如果你有一个像

这样的图像标签
<img src="img/button.gif" />

将其更改为

<img src="/img/button.gif" />

这告诉浏览器无论您的重写规则如何,从根到请求文件的确切路径。这需要针对您的所有相关链接进行,包括css和javascripts。这可能需要做一些工作,但一旦完成,它应该会使未来的维护变得更加容易,因为您不必担心页面的明显路径。

是的,这可以通过.htaccess相当简单地完成,但是有副作用,包括搜索引擎可以将其视为重复内容的事实,并且它可能会增加您的服务器带宽使用,因为用户无法有效地缓存静态内容。您最好的选择是在网站新的和不断增长时遵循最佳实践,而不是在解决方法导致问题后再尝试修复它。