【问题标题】:htaccess mod_rewrite:- products.php?cat=1 to /myfolder1/myproduct1/htaccess mod_rewrite:- products.php?cat=1 to /myfolder1/myproduct1/
【发布时间】:2010-01-24 14:10:43
【问题描述】:

我有一个 url 类型:-http://www.example.com/products.php?cat=1,我可以使用以下 .htaccess 规则重写为:-http://www.example.com/myproduct1:-RewriteRule ^myproduct1$ products.php?cat=1。

如果我想重写为:-http://www.example.com/myfolder1/myproduct1/,我需要输入什么规则?

【问题讨论】:

    标签: php .htaccess mod-rewrite seo


    【解决方案1】:

    对于/a/b/中的任意路径段a和b,你可以使用这个:

    RewriteRule ^([^/]+)/([^/]+)/$ products.php?segment1=$1&segment2=$2
    

    编辑    回复您的评论:只需在您的模式中输入good/boy:

    RewriteRule ^good/boy$ products.php?cat=1
    

    【讨论】:

    • 当前链接没有任何第二段。我希望将 products.php?cat=1 重写为:- /good/boy,但目前我只能将其重写为:- /boy。
    • 我确实尝试了 ^good/boy$ products.php?cat=1,但结果页面似乎无法识别 css 文件。使用 /boy,它显示正常,但使用 good/boy,页面呈现好像没有 css 文件。
    • @nitbuntu:您只需要正确引用您的 CSS 文件,因为现在您的基本 URL 已更改。尝试使用绝对路径(例如 /style.css)而不是相对路径(例如 style.css 或 ./style.css)。
    • @nitbuntu 如果您使用 /a/b/c 之类的 URL,则需要在链接中考虑重写后的 URL。如果您对层次结构中的不同步骤使用相同的 HTML(例如通过模板),则最好的选择是绝对 URL 或基本元素(它告诉浏览器将相对 URL 解释为相对于指定上下文而不是当前 URL )。
    • 我很想知道这个基本元素是什么?它是进入 htaccess 的脚本吗?
    【解决方案2】:

    首先,我假设您想要 http://www.example.com/myproduct2 重定向到 http://www.example.com/products.php?cat=2。在这种情况下,您宁愿使用该规则:

    RewriteRule ^myproduct([0-9])$ products.php?cat=$1
    

    然后你可以为你的文件夹做同样的事情,写如下:

    RewriteRule ^myfolder([0-9])/myproduct([0-9])$ products.php?folder=$1&cat=$2
    

    编辑

    那么你只需要写:

    RewriteRule ^folder1/myproduct1$ products.php?cat=1
    RewriteRule ^myfolder/differentproduct$ products.php?cat=2
    

    等等……

    【讨论】:

    猜你喜欢
    • 2013-03-19
    • 2011-01-12
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2012-11-05
    相关资源
    最近更新 更多