301重定向文件到清理网址

时间:2011-06-18 18:09:35

标签: apache .htaccess redirect

处理我的网页的重定向。我列出了所有旧网址和新网址。

旧网址是/directory/subdirectory/file.php

新网址是干净的网址

/目录/子目录/文件/

一些新的网址与没有“.php”的旧网址相匹配,而另一些则没有。

一个网页建议:

RedirectMatch 301 ^/sales/products/item$ /products/item-name/

但下面会给我一个重定向循环吗?

RedirectMatch 301 ^/privacy-policy$ /privacy-policy/

我还没有尝试过,但希望不要让自己陷入困境。

1 个答案:

答案 0 :(得分:0)

使用Apache的mod_rewrite - 将这些行添加到.htaccess文件中:

# Activate Rewrite Engine
RewriteEngine On

# redirect *.php to "nice" url
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)\.php$ $1/ [R=301,QSA]

# process "nice" urls by looking for appropriate .php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1.php [L,QSA]

这些规则将做两件事:

1)将“301”* .php重定向到“漂亮”的网址:directory/subdirectory/file.php将成为directory/subdirectory/file/

2)正确地提供这样的“好”的网址,例如directory/subdirectory/file/将被视为directory/subdirectory/file.php

P.S。如果重定向不起作用(有时可能会根据配置发生),请尝试在$ 1之前添加斜杠(例如/$1