【问题标题】:Change to URL and ReWrite rule not working更改为 URL 和重写规则不起作用
【发布时间】:2013-06-28 16:59:45
【问题描述】:

最近一直在利用 htaccess 文件来创建重写。

一切正常,但最近做了一些更改,包括一个类别名称,后跟产品,如下所示:

http://localhost/Limestone_Tiles/products/Antalya_Blanc.html

以前是这样的:

http://localhost/products/Antalya_Blanc.html

当一切正常时。改写规则如下:

RewriteRule ^products/(.*).html$ product_details.php?&furl=$1 [NC,L]
RewriteRule ^products/images/(.*)$ images/$1
RewriteRule ^products/picture_upload/(.*)$ picture_upload/$1
RewriteRule ^products/thumbnail.php(.*)$ thumbnail.php$1

所以为了适应新的变化,我改变了重写规则如下:

RewriteRule ^(.*)/products/(.*).html$ product_details.php?&furl=$1 [NC,L]
RewriteRule ^(.*)/products/images/(.*)$ images/$1
RewriteRule ^(.*)/products/picture_upload/(.*)$ picture_upload/$1
RewriteRule ^(.*)/products/thumbnail.php(.*)$ thumbnail.php$1

现在这种工作是因为

http://localhost/Limestone_Tiles/products/Antalya_Blanc.html

会加载,但没有图像加载 - 当页面加载时这对我来说没有意义?为什么没有图片?

如果我将重写规则更改为:

RewriteRule ^Limestone_Tiles/products/images/(.*)$ images/$1

将为该特定类别加载图像!

如果我把图片url放到浏览器中:

http://localhost/Limestone_Tiles/products/images/face.png

我收到以下消息:

在此服务器上找不到请求的 URL /images/Limestone_Tiles。

这也很奇怪,因为 /images/Limestone_Tiles 不是我刚刚粘贴到地址栏中的 Url。

也许我的重写规则仍然不正确?

非常感谢您提前提供的帮助。

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    这是因为您的规则具有反向引用第一个分组匹配的分组,而不是您真正想要的匹配。说,给定这条规则:

    RewriteRule ^(.*)/products/(.*).html$ product_details.php?&furl=$1 [NC,L]
    

    还有这个网址:

    http://localhost/Limestone_Tiles/products/Antalya_Blanc.html
    

    重写后的 URI 将是:/product_details.php?&furl=Limestone_Tiles

    而之前,如果使用旧规则,它会被重写为:/product_details.php?&furl=Antalya_Blanc

    如果这是您的预期行为,那很好,只是它违反了图像规则:

    RewriteRule ^(.*)/products/images/(.*)$ images/$1
    

    $1 反向引用第一个分组匹配 (.*)之前 /products/images/,而不是实际图像。需要改成:

    RewriteRule ^(.*)/products/images/(.*)$ images/$2
    

    您最好更改 HTML 内容并在那里修复此图像内容,而不是创建重写规则来尝试更正它。您可以尝试将其添加到页面标题中:

    <base href="/">
    

    【讨论】:

    • 太棒了——效果很好!也要考虑你的建议。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2014-08-10
    • 2017-03-13
    • 1970-01-01
    相关资源
    最近更新 更多