繁体   English   中英

htaccess 301重定向和重写网址

[英]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_rewriteregex不太满意。

更新:由于将其他人的代码串在一起,到目前为止,这是我设法完成的工作。 它存储在/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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM