SEO友好URL更改默认目录

时间:2011-12-02 00:06:04

标签: php .htaccess url seo

这个问题长期困扰着我。我承认这可能是因为缺乏经验所以我希望我能得到一些想法。

这是.htaccess

中的代码
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^view-([0-9]+)$ view.php?id=$1 [NC,QSA]

因此,当我访问http://domain/project/view-44时,它可以正常工作,但我希望最终使用斜杠,例如http://domain/project/view-44/

所以我把最后一行改为

RewriteRule ^view-([0-9]+)/$ view.php?id=$1 [NC,QSA]

现在当我访问http://domain/project/view-44/所有图像时,javascripts和样式都消失了。

现在,它不是从http://domain/project/style.css获取css,而是尝试从http://domain/project/view-44/style.css

获取它

我认为问题在于为项目指定url的方式不正确。就我而言,它只是

<link rel="stylesheet" type="text/css" href="style.css" >
<img src="images/web/showreel.png" alt="Image1" />

这是否意味着我必须在每个必需元素中指定一个完整的URL(http://domain/project/images/web/showreel.png)?

3 个答案:

答案 0 :(得分:3)

最好指定绝对URL,因为您知道始终会到达文档。我知道它很长,但不是宣布

<img src='http://domain/project/images/web/showreel.png' />

设置一个PHP gloabal变量,如

define('SITE_URL', ' http://domain/project');

然后做

<img src='<?php echo SITE_URL; ?>/images/web/showreel.png' />

关于.htaccess,请查看http://blog.valtersboze.com/2009/06/add-or-remove-trailing-slash-in-url-with-htaccess/

这解释了如何删除或保留尾部斜杠,但不是两者兼而有之,谷歌不同意这两种情况,他们会将其视为重复内容。

答案 1 :(得分:2)

简单的解决方法是使用

<base href="/index">

在HTML模板的<head>中。因此,所有资源链接再次相对于根目录,与虚拟RewriteRule结构无关。

http://www.w3.org/TR/html5/semantics.html#the-base-element

答案 2 :(得分:1)

把它放在文件的头部:

<base href="http://domain/project/" />

这是必要的,因为客户端的浏览器无法知道重写的URL,只能在服务器端知道。

相关问题