【发布时间】:2013-01-27 15:01:52
【问题描述】:
我刚刚移动了一个站点,并且仍在查看一些旧页面。以下是旧 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/
【问题讨论】:
-
@faa 我在发布时没有该代码。但现在我已经猜到了。
-
很高兴您找到了方法。这就是我删除之前评论的原因。
标签: regex apache mod-rewrite http-status-code-301