用查询字符串问题重写URL

时间:2019-03-17 12:26:31

标签: .htaccess

我有一些用htaccess重写URL的问题。 我需要以下内容:

旧:mydomain.com/categorie/details.php?companyid=10

新:mydomain.com/item/?p=10

我要动态捕获并替换(几个ID的)数字。 我已经阅读了另一个问题的答案,但这仅替换了查询字符串。我问我需要一些正则表达式,但是我是一个新手。

我在htaccess中有此地址

RewriteCond %{REQUEST_URI} ^/categorie/details\.php$ RewriteCond %{QUERY_STRING} ^companyID=([0-9]*)$ RewriteRule ^(.*)$ www.mydomain.com/item/?p=%1/ [R=301,L]

在我进行迁移之前,我已经对此进行了测试,并且可以正常工作,由于某些原因,在迁移后它将不再起作用。 我想念什么吗?这是错误的方法吗?

亲切的问候, 汤姆。

1 个答案:

答案 0 :(得分:0)

在此行

RewriteRule ^(.*)$ www.mydomain.com/item/?p=%1/ [R=301,L]

像这样输入有效网址:

RewriteRule ^(.*)$ http://www.example.com/item/?p=%1/ [R=301,L]

也将此[NC]放在此行的末尾,不区分大小写

RewriteCond %{QUERY_STRING} ^companyID=([0-9]*)$ [NC]

因此,您的规则应如下所示:

RewriteCond %{REQUEST_URI}  ^/categorie/details\.php$
RewriteCond %{QUERY_STRING} ^companyID=([0-9]*)$  [NC]
RewriteRule ^(.*)$ http://www.example.com/item/?p=%1 [R=301,L]

要进一步总结所有这些规则,请执行以下操作:

RewriteCond %{QUERY_STRING} ^companyID=([0-9]*)$  [NC]
RewriteRule ^categorie/details\.php$ http://www.example.com/item/?p=%1 [R=301,L]

当您想知道这是同一个域时,请让他们像这样:

RewriteCond %{QUERY_STRING} ^companyID=([0-9]*)$  [NC]
RewriteRule ^categorie/details\.php$  /item/?p=%1 [R=301,L]

不需要完整的URL。

注意:清除浏览器缓存,然后进行测试