2012-05-16 32 views
4

我想为我的网站创建平面链接。 htaccess的代码如下:自定义平面链接的mod_rewrite apache卡住

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^([0-9A-Za-z]+)?$ /index.php?page=$1 [L] 
    RewriteRule ^([0-9A-Za-z]+)/?$ /index.php?page=$1 [L] 
</IfModule>` 

现在我的网站工作可通过print_r($_GET)可以看到并获得所有的值。

我的网站有这样的代码:<img src="images/icons/image.png" />,其中图像驻留在路径:/images/icons/up.png

现在我可以访问我的网站:http://somedomain.com/home,一切工作正常。但是当我把:http://somedomain.com/home/,它卡住了。

图像为浏览器获取这样的路径:http://somedomain.com/home/images/icons/image.png这是不可用的,它应该是:http://somedomain.com/images/icons/image.png

如何解决这个问题?

如果通过修改.htaccess来解决任何问题,将会有帮助,因为我想为所有链接使用相对路径,而不是完整路径。


感谢Ben Clifford的帮助。据他说,如果我将第二条规则重定向到像第一条那样的格式,而不是index.php。那么它应该工作。

那么人们有什么想法该怎么做?我无法解决这个问题。请帮助家伙!

+0

将base-url元标记包含在您的头部。看看是否解决了这个问题。 – OptimusCrime

回答

1

您可以更改第二个重写规则,将用户重定向到非/版本的路径,而不是index.php;那么当这个重定向页面被加载时,它会碰到第一条规则,并带有正确的基本路径。

问题是图像名称会替换URL中最后一个/之后的所有内容:当您说somedomain.com/home时,图像文件名将附加到somedomain.com/,但在第二种情况下,最后的/是家中。我认为,使用重写规则修剪这个/关闭会解决这个问题。

+0

好的,明白了。但是,如果您按照您的说法为重定向构建代码将会很有帮助,因为我是这个mod_rewrite的新手。 –

+0

也许是这样的:RewriteRule ^([0-9A-Za-z] +)/?$/$ 1 [R] –

+0

是多数民众赞成在工作......谢谢! :) –