2010-08-07 149 views
0

我想重写我的网站上的两个网址,以便他们更适合搜索引擎。我如何在我的.htaccess中做到这一点?对于第一个我尝试这样做,但得到404错误:URL重写apache

RewriteRule ^research/([0-9][0-9])$ /research/$1/ [R] 
RewriteRule ^research/([0-9][0-9])/$ /urt.php?func=viewresearch&rid=$1 
RewriteRule ^research/([0-9])$ /research/$1/ [R] 
RewriteRule ^research/([0-9])/$ /urt.php?func=viewresearch&rid=$1 

对于第二个我想:

RewriteEngine on 
RewriteRule ^products/([0-9][0-9])$ /products/$1/ [R] 
RewriteRule ^products/([0-9][0-9])/$ /viewad.php?adid=$1 

当我浏览到例如http://www.example.com/products/12/,它重定向,但它看起来没有加载外部文件(Javascript,CSS等)。为什么会发生?

+0

顺便说一句,我wud喜欢重写只工作,如果func = viewresearch ...这可能吗? – 2010-08-07 20:03:14

回答

0

您可能正在使用相对URL,可能只是相对URL路径。在这种情况下,如果未指定基本URL,则相对URL将从作为当前URL的基本URL解析。

因此,当在基本URL路径/products/12/上使用相对URL路径引用(如css/style.css)时,它将被解析为/products/12/css/style.css而不是/css/style.css。因为这里的/products/12/是基本的URL路径,而不是/urt.php。 URL路径是而不是文件系统路径!客户端只知道URL,没有别的。

要解决这个问题,你有几个选择。最简单的方法是使用独立于实际基本URL路径的绝对URL路径/css/style.css。或者您通过使用HTML’s BASE element来更改基准网址(请注意,这会影响每个相对URL)。或者您调整相对URL路径以适合实际的基本URL路径,因此/products/12/使用../../css/style.css