我刚移动了一个网站,一些旧网页仍在浏览中。以下是旧网址结构的示例:
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
不太满意。
更新:由于将其他人的代码串联在一起,这是我迄今为止拼凑起来的。它存储在.htaccess
子文件夹中的/text_version
文件中。
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/
答案 0 :(得分:0)
在经历了很多混乱之后,并没有理解其中的大部分内容,我设法将这个解决方案拼凑起来:
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]