清理URL重写规则

时间:2015-03-20 12:29:13

标签: .htaccess mod-rewrite clean-urls

现在我的网址看起来像这样:

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

为了使其正常工作,我们需要告诉服务器在内部将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"

答案 1 :(得分: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]
相关问题