【问题标题】:URL rewriting with spaces用空格重写 URL
【发布时间】:2014-11-22 15:15:35
【问题描述】:

我有一个这样的网址:

www.qwerty.in/details.php?vendor_id=1&name=abcd%20cafe

我正在尝试在 .htaccess 文件的帮助下进行如下转换:

www.qwerty.in/1/abcd-cafe 

我正在尝试以下方法,但不幸的是它不起作用。谁能帮忙

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ details.php?vendor_id=$1&name=$2

【问题讨论】:

  • 那是你必须在其中编写脚本的 php 页面的 URL 吗?我的意思是,你的 GET 数组中有这些值吗?

标签: php .htaccess


【解决方案1】:

你的角色也必须留出空间:

RewriteRule ^([\w-]+)/([\w-\s]+)$ details.php?vendor_id=$1&name=$2 [L,QSA]

我用过\w,和[a-zA-Z0-9_]一样。

【讨论】:

    【解决方案2】:

    以下规则会将您的网址从www.qwerty.in/details.php?vendor_id=1&name=abcd%20cafe 转换为www.qwerty.in/1/abcd%20cafe

    RewriteRule ^([^/]*)/([^/]*)\.html$ /details.php?vendor_id=$1&name=$2 [L]
    

    然而它更通用,并且将转换前两个参数值,即使它们不是vendor_idname。如果这不是您喜欢的行为,请查看anubhava's answer

    可以使用以下方式将空格转换为下划线:

    RewriteRule ^(.*)\s(.*)$ $1_$2 [N] 
    

    另外,别忘了确保重写引擎在线:

    RewriteEngine On
    

    如果你想进一步试验这些规则,我推荐一个我最近发现的网站:http://www.generateit.net/mod-rewrite/

    【讨论】:

    • Weisz :谢谢......它的工作,但现在它没有采用页面的现有 css..知道为什么会这样吗?
    • 你可以使用绝对路径而不是相对路径;如果您的网站位于根目录中,这应该很容易。而不是详细介绍,请查看此 SO 线程:stackoverflow.com/questions/3899991/…
    • 你是如何引用 .css 文件的(例如:link 标签的rel 属性),它在目录树中的什么位置?
    • 我这样引用:
    • ./css/main1.css ./ 表示“当前文件夹”。如果删除点但保留斜线:href="/css/main1.css",会发生什么?另外,在我之前的评论中,我的意思是href,而不是rel。 (ಠ_ಠ)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多