使用htaccess进行外部和内部重定向

时间:2017-10-12 16:07:35

标签: apache .htaccess mod-rewrite

我想将http://mywebsite.com/folder/file.html转换为http://mywebsite.com/file。 我没有使用正则表达式,我只关心这一个URL。

我试过了 -

Redirect 301 /folder/file.html http://mywebsite.com/file

使用此功能,我可以从外部将此网址重定向到所需的网址,但由于该网址不存在,因此我获得了404.

现在,为了将新网址内部重定向到旧网址,我使用的是以下命令,但它似乎无法正常工作 -

RewriteRule http://mywebsite.com/file http://mywebsite.com/folder/file.html [L]

1 个答案:

答案 0 :(得分:1)

仅使用mod_rewrite指令并使用THE_REQUEST变量进行外部重定向。

# turn on rewrite engine
RewriteEngine On

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+/folder/file\.html[\s?] [NC]
RewriteRule ^ /file [R=301,L,NE]

# internal forward from pretty URL to actual one
RewriteRule ^file/?$ /folder/file.html [L,NC]