[英]htaccess 301 redirect and rewrite urls
我刚刚移动了一个网站,但一些旧页面仍在查看中。 这是旧的url结构的示例:
http://mydomain.com/text_version/personal_and_people_development.php
以及我希望它如何重定向到:
http://mydomain.com/personal-and-people-development/
我要执行的操作是301重定向/text_version/
文件夹中的任何页面,方法是剥离路径的/text_version
部分,将所有下划线转换为连字符,并将.php
文件扩展名替换为斜杠。
另请注意,我允许用户使用www.
子域,将来可能需要https://
访问。
是否可以像这样进行文件夹范围的301重定向,还是我必须指定每个单独的页面? 如果可以的话,有人可以给我一个指针,因为我对mod_rewrite
或regex
不太满意。
更新:由于将其他人的代码串在一起,到目前为止,这是我设法完成的工作。 它存储在/text_version
子文件夹中的.htaccess
文件中。
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L, QSA]
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://mydomain.com/$1/ [L,R=301]
RewriteRule (.*)_(.*) $1-$2 [N]
但这会转换:
http://mydomain.com/text_version/personal_and_people_development.php
至
http://mydomain.com/personal-and-people-development.php/
经过一番混乱,并且不了解其中的大部分内容,我设法拼凑了以下解决方案:
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule (.*)_(.*) $1-$2 [N]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ .*\.php.*$
RewriteRule ^(.*)\.php(.*)?$ /$1$2 [R=301,L]
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ ^(www.)?mydomain.com/$1/ [L,R=301]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.