.htaccess 301重定向匹配-多个URL

.htaccess 301重定向匹配-多个URL,.htaccess,redirect,.htaccess,Redirect,我有以下htaccess代码: Options +FollowSymLinks <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RedirectMatch 301 ^/([^-]+)-([^-]+)-([^-]+)-([^-]{2})\.html$ /$1-$2-in-$3-$4.html RedirectMatch 301 ^/([^-]+)-([^-]+)-([^-]+)\.html$ /$1-$2-in-$3.

我有以下htaccess代码:

Options +FollowSymLinks

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RedirectMatch 301 ^/([^-]+)-([^-]+)-([^-]+)-([^-]{2})\.html$ /$1-$2-in-$3-$4.html
RedirectMatch 301 ^/([^-]+)-([^-]+)-([^-]+)\.html$ /$1-$2-in-$3.html

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

你能用这些重写规则试试吗。这对我来说是个考验,名字里有个空格。并确保在尝试之前清除缓存

RewriteRule ^([^-]+)-([^-]+)-(?!in)([^/]+)-([^-]{2})\.html$ /$1-$2-in-$3-$4.html [R=301,L]
RewriteRule ^([^-]+)-([^-]+)-(?!in)([^-]+)\.html$ /$1-$2-in-$3.html [R=301,L]
根据这条规则,这对我来说很有效

http://example.com/music-classes-dallas-tx.html


你能用这些重写规则试试吗。这对我来说是个考验,名字里有个空格。并确保在尝试之前清除缓存

RewriteRule ^([^-]+)-([^-]+)-(?!in)([^/]+)-([^-]{2})\.html$ /$1-$2-in-$3-$4.html [R=301,L]
RewriteRule ^([^-]+)-([^-]+)-(?!in)([^-]+)\.html$ /$1-$2-in-$3.html [R=301,L]
根据这条规则,这对我来说很有效

http://example.com/music-classes-dallas-tx.html


您应该使用重写规则而不是重定向匹配,因为您有一个wordpress安装,它有路由规则。这些可能会导致重定向变得不可靠

处理此问题的最佳方法可能是对in和重定向进行负面展望:

RewriteRule ^([^-]+)-([^-]+)-(?!in-)(.+)\.html$ /$1-$2-in-$3.html [R=301,L]

您应该使用重写规则而不是重定向匹配,因为您有一个wordpress安装,它有路由规则。这些可能会导致重定向变得不可靠

处理此问题的最佳方法可能是对in和重定向进行负面展望:

RewriteRule ^([^-]+)-([^-]+)-(?!in-)(.+)\.html$ /$1-$2-in-$3.html [R=301,L]

谢谢它似乎又在使用重定向循环错误进行循环:domain.com/music-classes-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-。html@user1858780是我的错。我使用.htaccess测试站点对其进行了测试。我实际上在我的系统中测试了这个,规则将按预期工作。我编辑了第一条规则。我只是注意到它适用于加州圣地亚哥,但不适用于新泽西州。因此,有两个单词的状态由于某种原因没有重定向,但是两个单词+状态首字母可以工作。有什么想法吗?谢谢@用户1858780你能用一个新问题问这个问题吗?我会帮你回答。你问的时候请告诉我。这也有助于您的销售代表。@user1858780应该很简单。改变在[^-]+\.html中找到这个?!在[^/]+\.html的第二行。谢谢!它似乎又在使用重定向循环错误进行循环:domain.com/music-classes-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in-。html@user1858780是我的错。我使用.htaccess测试站点对其进行了测试。我实际上在我的系统中测试了这个,规则将按预期工作。我编辑了第一条规则。我只是注意到它适用于加州圣地亚哥,但不适用于新泽西州。因此,有两个单词的状态由于某种原因没有重定向,但是两个单词+状态首字母可以工作。有什么想法吗?谢谢@用户1858780你能用一个新问题问这个问题吗?我会帮你回答。你问的时候请告诉我。这也有助于您的销售代表。@user1858780应该很简单。改变在[^-]+\.html中找到这个?!在第二行的[^/]+\.html中。这实际上适用于所有城市/州格式。谢谢唯一的问题是,它把正常的网址也弄乱了。。。示例:domain.com/careers-jobs-culinary-arts-degree.html转到domain.com/careers-jobs-in-culinary-arts-degree。有什么办法可以防止这种情况发生吗?@user1858780你如何区分城市和非城市之间的区别?你上面的答案实际上在海报编辑完成后生效了。。。准备就绪。谢谢你的帮助!这实际上适用于所有城市/州格式。谢谢唯一的问题是,它把正常的网址也弄乱了。。。示例:domain.com/careers-jobs-culinary-arts-degree.html转到domain.com/careers-jobs-in-culinary-arts-degree。有什么办法可以防止这种情况发生吗?@user1858780你如何区分城市和非城市之间的区别?你上面的答案实际上在海报编辑完成后生效了。。。准备就绪。谢谢你的帮助!