清除 URL 重写规则

Clean URL rewriting rule

现在我的 url 看起来像这样:

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

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

我正在尝试重写它并将用户重定向到 url,它看起来应该是这个:

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

线索是我想隐藏 "en/c/" 部分并清除 url 中的逗号和空格。我完全不擅长重写。 有什么想法吗?

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

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

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

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

RewriteEngine On    # Turn on the rewriting engine

RewriteRule    ^url1/?$    url2.php    [NC,L]    # Handle requests for "url1"

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

RewriteEngine On
RewriteBase /

RewriteRule ^en/c/([^,\s]*)[,\s]+([^,\s]*)/(\d+)/?$ / [NC,L,NE,R=302]

RewriteRule ^(en/c)/([^,\s]*)[,\s]+(.*)/(\d+)/?$ // [NC,L]