Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
Apache 在.htaccess';行不通_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 在.htaccess';行不通

Apache 在.htaccess';行不通,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,在.htaccess文件中,我有不同的规则,它们单独工作很好,但合并到一个文件中就不行了。 以下是我的文件的一些示例: # take care of %C2%A0 RewriteRule ^(.+)\xc2\xa0(.+)$ $1-$2 [L,NE] # executes **repeatedly** as long as there are more than 1 spaces in URI RewriteRule "^(\S*) +(\S* .*)$" $1-$2 [L,NE] # ex

在.htaccess文件中,我有不同的规则,它们单独工作很好,但合并到一个文件中就不行了。 以下是我的文件的一些示例:

# take care of %C2%A0
RewriteRule ^(.+)\xc2\xa0(.+)$ $1-$2 [L,NE]

# executes **repeatedly** as long as there are more than 1 spaces in URI
RewriteRule "^(\S*) +(\S* .*)$" $1-$2 [L,NE]

# executes when there is exactly 1 space in URI 
RewriteRule "^productdetails/617/6/(\S*) (\S*?)/?$" /$1-$2/302 [L,R=302,NE]
此外,我还有以下几点:

RewriteCond %{QUERY_STRING} ^pid=617/?$
RewriteRule ^productdetails\.asp$  /Casio-CDP120-Digital-Piano-in-Black/302? [L,NC,R=301]
RewriteRule "^categories/3/Kawai Digital Pianos/?$" /Compare/Kawai-Digital-Pianos [L,NC,R=301]
它仍然可以正常工作。 我现在补充如下:

RewriteCond %{QUERY_STRING} ^pid=617/?$
RewriteRule ^productdetails\.asp$  /Casio-CDP120-Digital-Piano-in-Black/302? [L,NC,R=301]
RewriteRule "^categories/3/Kawai Digital Pianos/?$" /Compare/Kawai-Digital-Pianos [L,NC,R=301]
用于重写:

mysite.co.uk/categories/3/Kawai%20Digital%20Pianos/ to mysite.co.uk/Compare/Kawai-Digital-Pianos
这已经不起作用了


最后一条规则与其他规则结合使用的任何帮助都将非常有用

您只需确保规则的顺序正确即可。对于您的示例,以下顺序应该有效:

RewriteRule "^categories/3/Kawai Digital Pianos/?$" /Compare/Kawai-Digital-Pianos [L,NC,R=301]

RewriteCond %{QUERY_STRING} ^pid=617/?$
RewriteRule ^productdetails\.asp$  /Casio-CDP120-Digital-Piano-in-Black/302? [L,NC,R=301]

# take care of %C2%A0
RewriteRule ^(.+)\xc2\xa0(.+)$ $1-$2 [L,NE]

# executes **repeatedly** as long as there are more than 1 spaces in URI
RewriteRule "^(\S*) +(\S* .*)$" $1-$2 [L,NE]

# executes when there is exactly 1 space in URI 
RewriteRule "^productdetails/617/6/(\S*) (\S*?)/?$" /$1-$2/302 [L,R=301,NE]

真是太棒了,这是一种享受。再次感谢你今天的帮助。否则的话,这将是一个漫长的深夜。