使用regexp和inifite重定向的htaccess重写规则

杰克刀

我很难使用WP的旧URL的一部分为重定向创建重写规则。例子:

旧网址:

http://www.example.com/news/index.php/2014/11/07/my-blog-post-from-old-site

或者

http://www.example.com/news/index.php/2014/11/07/my_blog_post_from_old_site

新网址:

http://www.example.com/2014/11/07/my-blog-post

从破折号中删除后,新网址应仅具有日期和永久链接的前三个元素。

我的解决方案是在合并了来自这里https://stackoverflow.com/a/32852444/1090360和这里https://stackoverflow.com/a/1279758/1090360的答案之后而来的

以某种方式用下划线替换下划线的部分将创建无限重定向,并且服务器将冻结。如果我要删除部分,而用下划线代替破折号,则其余所有部分均应正常工作。

这是我的.httaccess规则

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#replace underscores with dashes
RewriteRule ^(/news/.*/[^/]*?)_([^/]*?_[^/]*)$ $1-$2 [N]
RewriteRule ^(/news/.*/[^/]*?)_([^/_]*)$ $1-$2 [R=301,L,NC]

#redirect to new URL
RewriteRule ^news/index\.php/([^-]+-[^-]+-[^-]+).* /$1 [R=301,L,NC]

#WP standard stuff
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
奥拉夫·迪斯切(Olaf Dietsche)

我认为,这是用下划线代替下划线的昂贵方法。但这至少在我的测试环境中有效。第一条规则将破折号一个接一个地替换。然后,第二条规则从请求的URL中删除前缀。

RewriteBase /

# replace underscores with dashes 
RewriteRule ^(news/index.php/.+?)_(.*) $1-$2 [L]

# strip "news/index.php"
RewriteRule ^news/index.php/(.*) /$1 [R=302,L]

我使用该N|next标志使用您原来的方法玩的更多,并且服务器也崩溃了。查看error.log,看来此无限循环是由Apache通过添加“路径信息后缀”创建的,该扩展将URL扩展为原始URL。因此,它会不断地用下划线代替下划线。

您可以使用另一个标志阻止此路径信息后缀,该标志DPI|discardpath给出以下规则

RewriteRule ^(news/index.php/.+?)_(.*) $1-$2 [N,DPI]

这似乎也可行。尽管我必须承认,但我不太了解这种“路径信息后缀”。Apache的Bugzilla Bug 38642中也有一个条目:mod_rewrite在替换发生后添加路径信息后缀


永远不要在301启用的情况下进行测试,请参阅此答案。有关调试.htaccess重写规则的提示,请参见详细信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用regexp和inifite重定向的htaccess重写规则

来自分类Dev

htaccess重定向和重写规则冲突

来自分类Dev

htaccess使用重写规则重定向URL

来自分类Dev

.htaccess重定向/重写规则

来自分类Dev

.htaccess重定向重写规则

来自分类Dev

.htaccess重定向重写规则

来自分类Dev

htaccess重写规则,用于重定向和删除扩展

来自分类Dev

.htaccess重定向到使用重写规则的URL

来自分类Dev

htaccess重写规则不重定向

来自分类Dev

.htaccess重定向问题/重写规则冲突

来自分类Dev

htaccess重写规则不重定向

来自分类Dev

使用.htaccess重定向规则

来自分类Dev

URL重写和重定向规则

来自分类Dev

Apache 的重定向和重写规则

来自分类Dev

htaccess - 重写规则 - url 重写后重定向

来自分类Dev

htaccess重写和重定向URL

来自分类Dev

.htaccess网址重写和重定向301

来自分类Dev

htaccess重写和重定向URL

来自分类Dev

htaccess参数重写和重定向

来自分类Dev

htaccess:重写和重定向301

来自分类Dev

htaccess 重写和重定向 php 扩展

来自分类Dev

使用.htaccess重写规则重定向到服务器上的其他文件夹

来自分类Dev

.htaccess重写规则重定向到404页面

来自分类Dev

.htaccess从重写器创建重定向规则

来自分类Dev

htaccess查询字符串重定向的重写规则?

来自分类Dev

.htaccess重定向/使用通配符重写

来自分类Dev

如何使用htaccess重定向规则?

来自分类Dev

防止使用url重写规则重定向管理目录

来自分类Dev

有重写规则时如何使用htacess进行重定向