Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
Regex ApacheHTAccess重写交换规则“+&引用;至于-&引用;_Regex_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Regex ApacheHTAccess重写交换规则“+&引用;至于-&引用;

Regex ApacheHTAccess重写交换规则“+&引用;至于-&引用;,regex,apache,.htaccess,mod-rewrite,redirect,Regex,Apache,.htaccess,Mod Rewrite,Redirect,在被雇来审查旧系统的SEO公司的请求下,我们需要将所有旧URL(下面的示例)从使用“+”改为“-”。系统是动态的,这些链接都没有被存储,但是如果这些文章/页面被发布到某个地方,他们担心如果以编程方式进行更改,这些链接看起来像是断页。因此,他们希望使用htaccess文件中的301s干净地完成这项工作 旧URL的示例: domain.com/Articles/Charter+Day+in+PA/ domain.com/Things+To+Do/ domain.com/Search/Things

在被雇来审查旧系统的SEO公司的请求下,我们需要将所有旧URL(下面的示例)从使用“+”改为“-”。系统是动态的,这些链接都没有被存储,但是如果这些文章/页面被发布到某个地方,他们担心如果以编程方式进行更改,这些链接看起来像是断页。因此,他们希望使用htaccess文件中的301s干净地完成这项工作

旧URL的示例:

domain.com/Articles/Charter+Day+in+PA/

domain.com/Things+To+Do/

domain.com/Search/Things+To+Do/

domain.com/things+to+do/Brandywine+River+Museum/

to:

domain.com/Articles/Charter-Day-in-PA/

domain.com/Things-To-Do/

domain.com/Search/Things-To-Do/

domain.com/things-to-do/Brandywine-River-Museum/
因此,我在htaccess文件中放置了以下内容,但它似乎不起作用:

RewriteEngine on

RewriteRule ^(.*?)\+(.*?[^\+]*?\+.*)$ $1-$2 [N]
RewriteRule ^(.*?)\+(.*?[^\+]*)$ $1-$2 [R=301]

RewriteCond %{HTTP_HOST} !^www
RewriteRule (.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
感谢您的帮助

您可以使用以下代码:

RewriteEngine on

RewriteRule "^([^+]*)\++([^+]*\+.*)$" /$1-$2 [L]
RewriteRule "^([^+]*)\+([^+]*)$" $1-$2 [L,R=301]

RewriteCond %{HTTP_HOST} !^www
RewriteRule (.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
^(.*?)\+(.*?[^\+]*?\+.*)$
是一种非常复杂的书写方式。这里的“不工作”是什么意思?页面是否挂起(例如,从不输出任何内容)或者您是否因为页面不存在而获得404?如果页面挂起(并且某些内容正在填充您的apache错误日志),则将DPI标志添加到您的
N
规则中可能会有所帮助(将
[N]
更改为
[N,DPI]
)“不起作用”指旧URL不会更改为新URL的情况。