【问题标题】:Clean URL rewriting rule干净的 URL 重写规则
【发布时间】:2015-03-20 12:29:12
【问题描述】:

现在我的网址是这样的:

http://domain.com/en/c/product%2C-product2%2C-product3/82 

其中最后一个数字是类别编号。

我试图重写它并将用户重定向到应该看起来这个的 url:

http://domain.com/82/product-product2-product3

线索是我想隐藏“en/c/”部分并从逗号和空格中清除 url。我在重写方面完全是绿色的。 有什么想法吗?

【问题讨论】:

    标签: .htaccess mod-rewrite clean-urls


    【解决方案1】:

    您可以在根 .htaccess 中使用这两条规则:

    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^en/c/([^,\s]*)[,\s]+([^,\s]*)/(\d+)/?$ $3/$1$2 [NC,L,NE,R=302]
    
    RewriteRule ^(en/c)/([^,\s]*)[,\s]+(.*)/(\d+)/?$ $1/$2$3/$4 [NC,L]
    

    【讨论】:

      【解决方案2】:

      为了让它工作,我们需要告诉服务器内部将所有对 URL“url1”的请求重定向到“url2.php”。我们希望这在内部发生,因为我们不希望浏览器地址栏中的 URL 发生变化。

      为此,我们需要首先创建一个名为“.htaccess”的文本文档来包含我们的规则。它必须准确命名(不是“.htaccess.txt”或“rules.htaccess”)。这将放置在服务器的根目录中(与我们示例中的“url2.php”相同的文件夹)。那里可能已经有一个 .htaccess 文件,在这种情况下,我们应该编辑它而不是覆盖它。

      .htaccess 文件是服务器的配置文件。如果文件中有错误,服务器将显示错误消息(通常带有错误代码“500”)。

      如果您使用 FTP 将文件传输到服务器,则必须确保使用 ASCII 模式而不是 BINARY 传输文件。在这个实例中,我们使用这个文件来执行两个简单的任务——首先,告诉 Apache 打开重写引擎,其次,告诉 Apache 我们希望它使用什么重写规则。我们需要在文件中添加以下内容:

      RewriteEngine On    # Turn on the rewriting engine
      
      RewriteRule    ^url1/?$    url2.php    [NC,L]    # Handle requests for "url1"
      

      【讨论】:

      • 是的,在实施之前,我希望您了解更多有关 htaccess 和 url 重写的主题,以便您可以有效地重写 url。如果答案有帮助,请不要忘记标记答案。 .谢谢
      • 谢谢,所以按照你的回答,我接下来应该写这样的东西:RewriteRule ^en/c/(.*)$ /$1 [L] 这应该隐藏“en/c/”字符串?
      猜你喜欢
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      相关资源
      最近更新 更多