我有一些用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]
在我进行迁移之前,我已经对此进行了测试,并且可以正常工作,由于某些原因,在迁移后它将不再起作用。 我想念什么吗?这是错误的方法吗?
亲切的问候, 汤姆。
答案 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。
注意:清除浏览器缓存,然后进行测试