清除 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]
现在我的 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]