Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 现有规则重定向到新url规则_.htaccess - Fatal编程技术网

.htaccess 现有规则重定向到新url规则

.htaccess 现有规则重定向到新url规则,.htaccess,.htaccess,我以前的URL结构类似于domain.com/product-name-etc-pid-001.html,我有以下htaccess代码: RewriteRule (.*)-pid-(.*)\.html$ p.php?n=$1&pid=$2 对于我的新结构,URL是domain.com/products/product-name-etc/001 RewriteRule ^products/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ p.php?pid=$2

我以前的URL结构类似于domain.com/product-name-etc-pid-001.html,我有以下htaccess代码:

RewriteRule (.*)-pid-(.*)\.html$ p.php?n=$1&pid=$2
对于我的新结构,URL是domain.com/products/product-name-etc/001

RewriteRule ^products/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ p.php?pid=$2 [NC,L]
现在我希望所有的旧URL都永久指向它们的新位置

   Redirect 301 /(.*)-pid-(.*)\.html$ ^compare/$1/$2/?$

我一直在试验并提出了上述代码,正如预期的那样,它不起作用,并给出了500个内部服务器错误。

您可以使用以下规则:

RewriteRule ^([^-]+)-pid-([^.]+)\.html$ /products/$1/$2 [L,NC,R=301]

RewriteRule ^products/([\w-]+)/([\w-]+)/?$ /p.php?n=$1&pid=$2 [NC,L,QSA]

使用旧规则并进行了轻微修改,并提供以下解决方案:

RewriteRule ^(.*)-pid-(.*)\.html$ /compare/$1/$2 [L,NC,R=301]

尝试了第一条规则,因为我已经准备好了第二条规则,但是它只是显示了一个404错误。哪个URL抛出404?我找到了解决方案。请解释您的解决方案是如何解决问题的。这使这个问题的未来访问者能够理解这个代码片段是如何解决这个问题的。