【问题标题】:htaccess / mod_rewrite for Search Engine Friendly URLshtaccess / mod_rewrite 用于搜索引擎友好的 URL
【发布时间】:2011-02-17 11:24:15
【问题描述】:

我在网络根目录中有一堆文件:-

/abc-674.php
/def-643.php
等等等等。

我想在请求以下 URL 时显示这些,而不更改浏览器中的 URL:-

/products/abc-674/this_can_be_anything.php
/products/abc-674/or_this.php

都重定向到 /abc-674.php,并且

/products/def-643/this_can_be_anything.php
/products/def-643/or_this.php

都重定向到 /def-643.php。

因此,基本上,products/ 和下一个 / 之间的位是目标,而之后的任何内容都可以有效地忽略。

如果重要的话,我的 .htaccess 中已经有一些代码可以将所有流量引导到我的首选域(带有 www):-

# Direct all traffic to domain.com
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC] 
RewriteCond %{HTTP_HOST} !^domain$ [NC] 
RewriteRule ^(.*) http://www.domain.com/$1 [R=301,L]

编辑:澄清一下 - 上面的最后第二行是因为我仅通过 http://domain/ 访问我的开发服务器上的站点,因此不希望重写申请这些请求。但是,我确实希望这种新的重写适用于所有请求。

非常感谢任何帮助!

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    我认为,您可以使用 .htaccess 中的下一条规则:

    RewriteRule ^products/([\d\w]+)/(.*)$ /$1.php
    

    【讨论】:

    • 谢谢,但我无法让它工作。我对我原来的问题做了一些澄清,也许这就是原因?
    • 我不明白。例如,如果用户请求像“domain.com/products/something/whatever.php”这样的url,那么他将看到文件“domain.com/something.php”的内容。这是你需要的吗?
    • 我刚刚用你的代码测试了htaccess,我已经添加了我的代码——它对我来说很好用。您遇到了哪种错误?
    • 感谢 IgorM,我不确定发生了什么,但我最终确实使用您的代码让它工作了。感谢您的回答,感谢您的坚持!
    猜你喜欢
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 2012-06-18
    • 2011-12-24
    • 1970-01-01
    • 2011-08-31
    • 2014-11-09
    • 1970-01-01
    相关资源
    最近更新 更多